拟合和预测,估计器基础
from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier(random_state=0)
X = [[1, 2, 3],
[11, 12, 13]]
y = [0, 1]
clf.fit(X, y)
'''
fit方法接受两个参数,X和y(通常都是numpy的数组)
X是样本矩阵,大小通常是(n_samples, n_features)
y是目标值,对于回归任务是实数,针对分类任务是整数
针对无监督学习,不需要指定y
并且y通常是一位数组,第i个值对应X中第i行样本的目标值
'''
print(clf.predict([[4, 5, 6],
[14, 15, 16]]))
##模拟器被fitted之后,就可以使用这个模拟器进行预测
Transformers and pre-processors
from sklearn.preprocessing import StandardScaler
X = [[0, 15],
[1, -10]]
scs = StandardScaler().fit(X)
print(scs.transform(X))
##类似上面的模拟器,同样通过fit函数进行训练,但是是通过transform函数输出
##新输入的样本的转换结果
管道:链接预处理器和评估器
#转换器和估计器(预测器)可以组合成一个统一对象:管道
#使用管道可以防止数据泄露
''''''
'''
1、加载数据集
2、将其分成训练集和测试集
3、在测试集上计算管道的准确率
'''
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
pipe = make_pipeline(StandardScaler(), LogisticRegression(random_state=0))
##将预处理器和模拟器(预测器)组合成一个管道
X, y = load_iris(return_X_y=True)
##加载数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
##将数据分成训练集和测试集
pipe.fit(X_train, y_train)
##使用训练训练集训练模型
print(accuracy_score(pipe.predict(X_test), y_test))
##在测试集上计算训练准确率
建议使用管道,因为如果不适用管道,而在预处理时使用全部数据,之后执行任何种类的交叉验证, 都会破坏测试集和训练集之间互相独立的假设。因为使用全部数据进行预处理,训练集中的数据就会被测试集中的数据影响,训练出的模型适用于测试集的可能性更大,因为在测试集上测试模型好坏,获得的结果比模型真实效果要好一些。
使用管道进行交叉验证和搜索将在很大程度上避免这个常见的陷阱。
模型评价
##使用cross_validate执行 5 步交叉验证
from sklearn.datasets import make_regression
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import cross_validate
X, y = make_regression(n_samples=1000, random_state=0)
lr = LinearRegression()
result = cross_validate(lr, X, y)
print(result['test_score'])
自动参数搜索
所有的估计器(模拟器)都有可以调优的参数。模拟器的泛化能力通常主要依赖于几个参数。通常,不容易确定这些数据的值,因为这些只依赖于手头的数据。
Scikit-learn提供了可以根据交叉验证自动选择最优参数的工具。
scikit-learn提供了8个模块
-
监督学习
-
无监督学习
-
模型选择和评估
-
检查(Inspection)
-
可视化
-
数据集转换
-
数据加载工具
-
使用scikit-learn进行计算
下面分别对这八个模块进行学习,计划学习顺序是: -
数据加载工具
-
数据集转换
-
监督学习
-
无监督学习
-
可视化
-
模型选择和评估
-
检查(Inspection)
-
使用scikit-learn进行计算