sklearn特征选择和分类模型
模型 分类 sklearn 特征选择
2023-09-11 14:14:59 时间
sklearn特征选择和分类模型
数据格式:
这里。原始特征的输入文件的格式使用libsvm的格式,即每行是label index1:value1 index2:value2这样的稀疏矩阵的格式。
sklearn中自带了非常多种特征选择的算法。
我们选用特征选择算法的根据是数据集和训练模型。
以下展示chi2的使用例。chi2,採用卡方校验的方法进行特征选择。比較适合0/1型特征和稀疏矩阵。
from sklearn.externals.joblib import Memory from sklearn.datasets import load_svmlight_file mem = Memory("./mycache") @mem.cache def get_data(): data = load_svmlight_file("labeled_fea.txt") return data[0], data[1] X, y = get_data() from sklearn.feature_selection import SelectKBest from sklearn.feature_selection import chi2 data = SelectKBest(chi2, k=10000).fit_transform(X, y) from sklearn.datasets import dump_svmlight_file dump_svmlight_file(data, y, "labeled_chi2_fea.txt",False)
sklearn中分类模型也非常多,接口统一。非常方便使用。
分类之前。能够不进行特征选择。也能够先独立进行特征选择后再做分类,还能够通过pipeline的方式让特征选择和分类集成在一起。
from sklearn.externals.joblib import Memory from sklearn.datasets import load_svmlight_file mem = Memory("./mycache") @mem.cache def get_data(): data = load_svmlight_file("labeled_fea.txt") return data[0], data[1] X, y = get_data() train_X = X[0:800000] train_y = y[0:800000] test_X = X[800000:] test_y = y[800000:] print(train_X.shape) print(test_X.shape) from sklearn.feature_selection import SelectKBest, chi2 from sklearn.pipeline import Pipeline from sklearn.ensemble import RandomForestClassifier from sklearn.naive_bayes import BernoulliNB, MultinomialNB from sklearn.linear_model import RidgeClassifier from sklearn.linear_model import Perceptron from sklearn.neighbors import NearestCentroid from sklearn.linear_model import SGDClassifier from sklearn.svm import LinearSVC from sklearn.ensemble import GradientBoostingClassifier from sklearn import metrics from time import time #独立的特征选择 ch2 = SelectKBest(chi2, k=10000) train_X = ch2.fit_transform(train_X, train_y) test_X = ch2.transform(test_X) #依据一个分类模型。训练模型后。进行測试 def benchmark(clf): print('_' * 80) print("Training: ") print(clf) t0 = time() clf.fit(train_X, train_y) train_time = time() - t0 print("train time: %0.3fs" % train_time) t0 = time() pred = clf.predict(test_X) test_time = time() - t0 print("test time: %0.3fs" % test_time) score = metrics.accuracy_score(test_y, pred) print("accuracy: %0.3f" % score) clf_descr = str(clf).split('(')[0] return clf_descr, score, train_time, test_time clf = RandomForestClassifier(n_estimators=100) #clf = RidgeClassifier(tol=1e-2, solver="lsqr") #clf = Perceptron(n_iter=50) #clf = LinearSVC() #clf = GradientBoostingClassifier() #clf = SGDClassifier(alpha=.0001, n_iter=50,penalty="l1") #clf = SGDClassifier(alpha=.0001, n_iter=50,penalty="elasticnet") #clf = NearestCentroid() #clf = MultinomialNB(alpha=.01) #clf = BernoulliNB(alpha=.01) #pipeline模型特征选择和分类模型结合在一起 #clf = Pipeline([ ('feature_selection', LinearSVC(penalty="l1", dual=False, tol=1e-3)), ('classification', LinearSVC())]) benchmark(clf)
值得注意的是,上面的程序训练和预測阶段都是在同一份程序运行。而实际应用中。训练和预測是分开的。因此,要使用python的对象序列化特征。每次训练完之后。序列化模型对象。保存模型的状态,预測时反序列化模型对象。还原模型的状态。
參考资料:
http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_svmlight_file.html
http://scikit-learn.org/stable/modules/generated/sklearn.datasets.dump_svmlight_file.html
http://scikit-learn.org/stable/modules/feature_selection.html#feature-selection
本文作者:linger
本文链接:http://blog.csdn.net/lingerlanlan/article/details/47960127
相关文章
- 讨喜的隔离可变性(十二)基于角色模型的局限性和小结
- 数据仓库专题(12)-数据分类模型
- [转]高性能IO模型浅析
- AI:人工智能领域算法思维导图集合之有监督学习/无监督学习/强化学习类型的具体算法简介(预测函数/优化目标/求解算法)、分类/回归/聚类/降维算法模型选择思路、11类机器学习算法详细分类之详细攻略
- ML之PDP:基于titanic泰坦尼克是否获救二分类预测数据集利用PDP部分依赖图对RF随机森林实现模型可解释性案例
- ML之Xgboost:利用Xgboost模型(7f-CrVa+网格搜索调参)对数据集(比马印第安人糖尿病)进行二分类预测
- 【电动车优化调度】基于模型预测控制(MPC)的凸优化算法的电动车优化调度(Matlab代码实现)
- 【混合遗传规划和正交最小二乘法】基于混合遗传规划和正交最小二乘法的线性参数动态输入输出系统的模型结构识别(Matlab代码实现)
- Qt使用模型操作数据库
- 【分类模型】Q 型聚类分析
- N分类模型评估计算方法
- 万能模型可视化工具
- 数学建模学习(38):时间序列和灰色预测模型原理与大概实现
- LFED模型
- 将模型转为NNIE框架支持的wk模型第一步:tensorflow->caffe
- 智能对联模型太难完成?华为云ModelArts助你实现!手把手教学
- 【华为云技术分享】处理器存储模型概述(1)
- 【华为云技术分享】HDC.Cloud | 以数字资产模型为核心驱动的一站式IoT数据分析实践
- Python实现GWO智能灰狼优化算法优化BP神经网络分类模型(BP神经网络分类算法)项目实战
- Python实现ALO蚁狮优化算法优化支持向量机分类模型(SVC算法)项目实战
- Python实现ACO蚁群优化算法优化支持向量机分类模型(SVC算法)项目实战
- Linux中fork的使用(04)---wait模型
- CNN 文本分类模型优化经验——关键点:加卷积层和FC可以提高精度,在FC前加BN可以加快收敛,有时候可以提高精度,FC后加dropout,conv_1d的input维度加大可以提高精度,但是到256会出现OOM。
- 【机器学习】10、最大熵模型与EM算法
- TensorFlow:实战Google深度学习框架(一)计算、数据、运行模型
- 【Transformers】第 6 章:用于标记分类的微调语言模型
- RCNN网络源码解读(Ⅳ) --- 训练SVM二分类模型的准备过程