[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进行数据分析》