SKlearn中的函数学习总结(持续更新)

 

关于SKlearn中的函数学习及关键代码部分,会持续更新

(参考sklearn官方文档)

一:分类、回归

二:降维

三:模型评估与选择

四:数据预处理

五:模型保存

 

大类小类适用问题实现文档说明重要代码

一、分类、回归

1.1 广义线性模型1.1.1 普通最小二乘法回归sklearn.linear_model.LinearRegression from sklearn.linear_model import LinearRegression#引入线性回归模型        ###训练数据###
model=LinearRegression()                                 model.fit(data_X,data_y)  #  训练数据
model.predict(data_X[:4,:])#预测前4个数据                                         ###属性和功能###
print(model.coef_)  #_coef得到模型的系数                                     print(model.intercept_)  #_intercept得到模型的截距                 print(model.get_params())#得到模型的参数                                                            #  对 Model 用 R^2 的方式进行打分,输出精确度    print(model.score(data_X,data_y))#对训练情况进行打分 (可以使用外部计算)                                                                 
注:本节中所有的回归模型皆为线性回归模型1.1.2 Ridge/岭回归回归sklearn.linear_model.Ridge解决两类回归问题:                                                 一是样本少于变量个数                                              二是变量间存在共线性 
 1.1.3 Lasso回归sklearn.linear_model.Lasso适合特征较少的数据 
 1.1.4 Multi-task Lasso回归sklearn.linear_model.MultiTaskLassoy值不是一元的回归问题 
 1.1.5 Elastic Net回归sklearn.linear_model.ElasticNet结合了Ridge和Lasso 
 1.1.6 Multi-task Elastic Net回归sklearn.linear_model.MultiTaskElasticNety值不是一元的回归问题 
 1.1.7 Least Angle Regression(LARS)回归sklearn.linear_model.Lars适合高维数据 
 1.1.8 LARS Lasso回归sklearn.linear_model.LassoLars(1)适合高维数据使用 
(2)LARS算法实现的lasso模型 
 1.1.9 Orthogonal Matching Pursuit (OMP)回归sklearn.linear_model.OrthogonalMatchingPursuit基于贪心算法实现 
 1.1.10 贝叶斯回归回归sklearn.linear_model.BayesianRidge优点: (1)适用于手边数据(2)可用于在估计过程中包含正规化参数  
sklearn.linear_model.ARDRegression缺点:耗时 
 1.1.11 Logistic regression分类sklearn.linear_model.LogisticRegression  
 1.1.12 SGD(随机梯度下降法)分类sklearn.linear_model.SGDClassifier适用于大规模数据 
/回归sklearn.linear_model.SGDRegressor 
 1.1.13 Perceptron分类sklearn.linear_model.Perceptron适用于大规模数据 
 1.1.14 Passive Aggressive Algorithms分类sklearn.linear_model.适用于大规模数据 
/回归PassiveAggressiveClassifier 
   
 sklearn.linear_model. 
 PassiveAggressiveRegressor 
 1.1.15 Huber Regression回归sklearn.linear_model.HuberRegressor能够处理数据中有异常值的情况 
 1.1.16 多项式回归回归sklearn.preprocessing.PolynomialFeatures通过PolynomialFeatures将非线性特征转化成多项式形式,再用线性模型进行处理 
1.2 线性和二次判别分析1.2.1 LDA分类/降维sklearn.discriminant_analysis.  
LinearDiscriminantAnalysis 
 1.2.2 QDA分类sklearn.discriminant_analysis.  
QuadraticDiscriminantAnalysis 
1.3 核岭回归简称KRR回归sklearn.kernel_ridge.KernelRidge将核技巧应用到岭回归(1.1.2)中,以实现非线性回归 
1.4 支持向量机1.4.1 SVC,NuSVC,LinearSVC分类sklearn.svm.SVCSVC可用于非线性分类,可指定核函数; 
sklearn.svm.NuSVCNuSVC与SVC唯一的不同是可控制支持向量的个数; 
sklearn.svm.LinearSVCLinearSVC用于线性分类 
 1.4.2 SVR,NuSVR,LinearSVR回归sklearn.svm.SVR同上,将"分类"变成"回归"即可 
sklearn.svm.NuSVR 
sklearn.svm.LinearSVR 
 1.4.3 OneClassSVM异常检测sklearn.svm.OneClassSVM无监督实现异常值检测 
1.5 随机梯度下降同1.1.12    
1.6 最近邻1.6.1 Unsupervised Nearest Neighbors--sklearn.neighbors.NearestNeighbors无监督实现K近邻的寻找 
 1.6.2 Nearest Neighbors Classification分类sklearn.neighbors.KNeighborsClassifier(1)不太适用于高维数据 
sklearn.neighbors.RadiusNeighborsClassifier(2)两种实现只是距离度量不一样,后者更适合非均匀的采样 
 1.6.3 Nearest Neighbors Regression回归sklearn.neighbors.KNeighborsRegressor同上from sklearn.neighbors import KNeighborsClassifier                                                               knn = KNeighborsClassifier()
knn.fit(X_train, y_train)
print(knn.predict(X_test))
print(y_test)
sklearn.neighbors.RadiusNeighborsRegressor 
 1.6.5 Nearest Centroid Classifier分类sklearn.neighbors.NearestCentroid每个类对应一个质心,测试样本被分类到距离最近的质心所在的类别 
1.7 高斯过程(GP/GPML)1.7.1 GPR回归sklearn.gaussian_process.与KRR一样使用了核技巧 
GaussianProcessRegressor 
 1.7.3 GPC分类sklearn.gaussian_process.  
GaussianProcessClassifier 
1.8 交叉分解实现算法:CCA和PLS----用来计算两个多元数据集的线性关系,当预测数据比观测数据有更多的变量时,用PLS更好 
1.9 朴素贝叶斯1.9.1 高斯朴素贝叶斯分类sklearn.naive_bayes.GaussianNB处理特征是连续型变量的情况 
 1.9.2 多项式朴素贝叶斯分类sklearn.naive_bayes.MultinomialNB最常见,要求特征是离散数据 
 1.9.3 伯努利朴素贝叶斯分类sklearn.naive_bayes.BernoulliNB要求特征是离散的,且为布尔类型,即true和false,或者1和0 
1.10 决策树1.10.1 Classification分类sklearn.tree.DecisionTreeClassifier  
 1.10.2 Regression回归sklearn.tree.DecisionTreeRegressor  
1.11 集成方法1.11.1 Bagging分类/回归sklearn.ensemble.BaggingClassifier可以指定基学习器,默认为决策树 
sklearn.ensemble.BaggingRegressor 
注:1和2属于集成方法中的并行化方法,3和4属于序列化方法1.11.2 Forests of randomized trees分类/回归RandomForest(RF,随机森林):基学习器为决策树 
sklearn.ensemble.RandomForestClassifier 
sklearn.ensemble.RandomForestRegressor 
ExtraTrees(RF改进): 
sklearn.ensemble.ExtraTreesClassifier 
sklearn.ensemble.ExtraTreesRegressor 
 1.11.3 AdaBoost分类/回归sklearn.ensemble.AdaBoostClassifier可以指定基学习器,默认为决策树 
sklearn.ensemble.AdaBoostRegressor 
号外:最近特别火的两个梯度提升算法,LightGBM和XGBoost1.11.4 Gradient Tree Boosting分类/回归GBDT:基学习器为决策树 
(XGBoost提供了sklearn接口)sklearn.ensemble.GradientBoostingClassifier 
 GBRT: 
 sklearn.ensemble.GradientBoostingRegressor 
 1.11.5 Voting Classifier分类sklearn.ensemble.VotingClassifier须指定基学习器 
1.12 多类与多标签算法------sklearn中的分类算法都默认支持多类分类,其中LinearSVC、 LogisticRegression和GaussianProcessClassifier在进行多类分类时需指定参数multi_class 
1.13 特征选择1.13.1 过滤法之方差选择法特征选择sklearn.feature_selection.VarianceThreshold特征选择方法分为3种:过滤法、包裹法和嵌入法。过滤法不用考虑后续学习器 
 1.13.2 过滤法之卡方检验特征选择sklearn.feature_selection.chi2,结合sklearn.feature_selection.SelectKBest  
 1.13.3 包裹法之递归特征消除法特征选择sklearn.feature_selection.RFE包裹法需考虑后续学习器,参数中需输入基学习器 
 1.13.4 嵌入法特征选择sklearn.feature_selection.SelectFromModel嵌入法是过滤法和嵌入法的结合,参数中也需输入基学习器 
1.14 半监督1.14.1 Label Propagation分类/回归sklearn.semi_supervised.LabelPropagation  
sklearn.semi_supervised.LabelSpreading 
1.15 保序回归--回归sklearn.isotonic.IsotonicRegression  
1.16 概率校准------在执行分类时,获得预测的标签的概率 
1.17 神经网络模型(待写)    

二、降维

2.5 降维2.5.1 主成分分析降维PCA:(1)IPCA比PCA有更好的内存效率,适合超大规模降维。 
sklearn.decomposition.PCA(2)KPCA可以进行非线性降维 
IPCA:(3)SPCA是PCA的变体,降维后返回最佳的稀疏矩阵 
sklearn.decomposition.IncrementalPCA  
KPCA:  
sklearn.decomposition.KernelPCA  
SPCA:  
sklearn.decomposition.SparsePCA  
 2.5.2 截断奇异值分解降维sklearn.decomposition.TruncatedSVD可以直接对scipy.sparse矩阵处理 
 2.5.3 字典学习--sklearn.decomposition.SparseCoderSparseCoder实现稀疏编码,DictionaryLearning实现字典学习 
sklearn.decomposition.DictionaryLearning 

三、模型评估与选择

3.1 交叉验证/CV3.1.1 分割训练集和测试集--sklearn.model_selection.train_test_split  
 3.1.2 通过交叉验证评估score--sklearn.model_selection.cross_val_scorescore对应性能度量,分类问题默认为accuracy_score,回归问题默认为r2_score,neg_mean_squared_error,便得到对于不同参数时的损失函数from sklearn.cross_validation import cross_val_score # K折交叉验证模块

#使用K折交叉验证模块
scores = cross_val_score(knn, X, y, cv=5, scoring='accuracy')

#将5次的预测准确率打印出
print(scores)
# [ 0.96666667  1.          0.93333333  0.96666667  1.        ]

#将5次的预测准确平均率打印出
print(scores.mean())
# 0.973333333333                                                                #一般来说平均方差(neg_mean_squared_error)会用于判断回归(Regression)模型的好坏。
 3.1.3 留一法LOO--sklearn.model_selection.LeaveOneOutCV的特例 
 3.1.4 留P法LPO--sklearn.model_selection.LeavePOutCV的特例 
3.2 调参3.2.1 网格搜索--sklearn.model_selection.GridSearchCV最常用的调参方法。可传入学习器、学习器参数范围、性能度量score(默认为accuracy_score或r2_score )等 
 3.2.2 随机搜索--sklearn.model_selection.RandomizedSearchCV参数传入同上 
3.3 性能度量3.3.1 分类度量----对应交叉验证和调参中的score 
 3.3.2 回归度量----  
 3.3.3 聚类度量----  
3.4 模型持久性------使用pickle存放模型,可以使模型不用重复训练 
3.5 验证曲线3.5.1 验证曲线--sklearn.model_selection.validation_curve横轴为某个参数的值,纵轴为模型得分 
 3.5.2 学习曲线--sklearn.model_selection.learning_curve横轴为训练数据大小,纵轴为模型得分,Sklearn.learning_curve中的learning curve可以很直观的看出Model学习的进度,对比发现有没有过拟合 

四、数据预处理

4.3 数据预处理4.3.1 标准化数据预处理标准化:scale与StandardScaler都是将将特征转化成标准正态分布(即均值为0,方差为1),且都可以处理scipy.sparse矩阵,但一般选择后者from sklearn import preprocessing #标准化数据模块
import numpy as np

#建立Array
a = np.array([[10, 2.7, 3.6],
              [-100, 5, -2],
              [120, 20, 40]], dtype=np.float64)

#将normalized后的a打印出
print(preprocessing.scale(a))
# [[ 0.         -0.85170713 -0.55138018]
#  [-1.22474487 -0.55187146 -0.852133  ]
#  [ 1.22474487  1.40357859  1.40351318]]
sklearn.preprocessing.scale
sklearn.preprocessing.StandardScaler
  数据预处理 MinMaxScaler默认为0-1缩放,MaxAbsScaler可以处理scipy.sparse矩阵###利用minmax方式对数据进行规范化###  
X=preprocessing.minmax_scale(X)
区间缩放:
sklearn.preprocessing.MinMaxScaler
sklearn.preprocessing.MaxAbsScale
 4.3.2 非线性转换数据预处理sklearn.preprocessing.QuantileTransformer可以更少的受异常值的影响 
 4.3.3 归一化数据预处理sklearn.preprocessing.Normalizer将行向量转换为单位向量,目的在于样本向量在点乘运算或其他核函数计算相似性时,拥有统一的标准 
 4.3.4 二值化数据预处理sklearn.preprocessing.Binarizer通过设置阈值对定量特征处理,获取布尔值 
 4.3.5 哑编码数据预处理sklearn.preprocessing.OneHotEncoder对定性特征编码。也可用pandas.get_dummies实现 
 4.3.6 缺失值计算数据预处理sklearn.preprocessing.Imputer可用三种方式填充缺失值,均值(默认)、中位数和众数。也可用pandas.fillna实现 
 4.3.7 多项式转换数据预处理sklearn.preprocessing.PolynomialFeatures  
 4.3.8 自定义转换数据预处理sklearn.preprocessing.FunctionTransformer  

五、模型保存

5.模型保存5.1 使用pickle保存模型保存https://morvanzhou.github.io/tutorials/machine-learning/sklearn/3-5-save/我们花费很长时间用来训练数据,调整参数,得到最优模型。但如果改变平台,我们还需要重新训练数据和修正参数来得到模型,将会非常的浪费时间。此时我们可以先将model保存起来,然后便可以很方便的将模型迁移。最后可以知道joblib在使用上比较容易,读取速度也相对pickle快。import pickle #pickle模块

#保存Model(注:save文件夹要预先建立,否则会报错)
with open('save/clf.pickle', 'wb') as f:
    pickle.dump(clf, f)

#读取Model
with open('save/clf.pickle', 'rb') as f:
    clf2 = pickle.load(f)
    #测试读取后的Model
    print(clf2.predict(X[0:1]))
5.2 使用joblib 保存from sklearn.externals import joblib #jbolib模块

#保存Model(注:save文件夹要预先建立,否则会报错)
joblib.dump(clf, 'save/clf.pkl')

#读取Model
clf3 = joblib.load('save/clf.pkl')

#测试读取后的Model
print(clf3.predict(X[0:1]))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值