[Python] sklearn

1、skleran中包的命名规律

API帮助中每个大标题对应skleran源码文件夹下的一个文件夹(如preprocessing)

再下一级的是类(如Imputer),定义在文件夹中的py文件里,一般每个py文件中会定义多个类

 

2、sklearn中的主要对象(类)

估算器(estimator):能够根据数据集对某些参数进行估算,通过fit()方法实现

转换器(transformer):依赖通过fit()学习到的参数对数据进行转换,上面的例子中,Imputer既是估算器又是转换器

预测器(predictor):根据给定数据集进行预测,如LinearRegression,通过predict()方法实现

 

3、skleran中对象包含的通用方法

fit():对数据进行初步处理,求均值、方差等(一般用于训练集)

transform():对数据进行进一步加工,如在SimpleImputer类中是根据每列的均值补上空缺元素(一般用于测试集)

fit_transform():先fit(),再transform()(一般用于训练集)

pridict():对数据进行分类、拟合等,得到最后结果

 

注意通用方法不是多态,只是定义了同样名字的方法而已,不同的方法定义在不同类中,命名空间互不冲突。sklearn这样设计的目的也是方便编程人员记忆

 

4、sklearn常用包使用说明

sklearn.datasets

fetch_mnist:获取MNIST数据集

 

sklearn.preprocessing

Imputer:处理缺失数据(最新版的sklearn中此类被命名为SimpleImputer,放到了sklearn.imputer中)

LabelEncoder:将文本标签转换为数字

StandardScaler:标准化数据,保证每个维度的数据方差为1,均值为0

sklearn.model_selection

StratifiedKFold:分层抽样

cross_val_score:折叠交叉验证

sklearn.linear_model

SGDClassifier:随机梯度下降分类器

 

sklearn.pipeline

pipeline

sklearn.cross_validation

train_test_split:将数据集打乱并划分为测试集合训练集

sklearn.metrics

confusion_matrix:得到真实集和预测集的混淆矩阵

precison_score:精度

recall_score:召回

f1_score:f1值

roc_curve:roc曲线

5、代码实例

例1:

>>> import numpy as np
>>> from sklearn.impute import SimpleImputer
>>> imp = SimpleImputer(missing_values=np.nan, strategy='mean')
>>> imp.fit([[1, 2], [np.nan, 3], [7, 6]])       
SimpleImputer(copy=True, fill_value=None, missing_values=nan, strategy='mean', verbose=0)
>>> X = [[np.nan, 2], [6, np.nan], [7, 6]]
>>> print(imp.transform(X))           
[[4.          2.        ]
 [6.          3.666...]
 [7.          6.        ]]

例2:

from sklearn.preprocessing import StandardScaler
data = [[0,0],[0,0],[1,1],[1,1]]
scaler = StandardScaler()
print(scaler.fit(data))
print(scaler.mean_)
print(scaler.transform(data))
print(scaler.transform([[2,2]]))

例3:

>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
>>> X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
>>> # y = 1 * x_0 + 2 * x_1 + 3
>>> y = np.dot(X, np.array([1, 2])) + 3
>>> reg = LinearRegression().fit(X, y)
>>> reg.score(X, y)
1.0
>>> reg.coef_
array([1., 2.])
>>> reg.intercept_ 
3.0000...
>>> reg.predict(np.array([[3, 5]]))
array([16.])

 

6、参考书

《Scikit-Learn与TensorFlow机器学习实用指南》

https://www.jianshu.com/p/9efbae6dbf8e

https://github.com/ageron/handson-ml

《利用Python进行数据分析》