主要内容
分类算法:
目标值:类别
- sklearn转换器与预估器
- KNN算法
- 模型选择与调优
- 朴素贝叶斯算法
- 决策树
- 随机森林
sklearn转换器与预估器
转换器
预估器
estimator
转换器-特征工程的父类
标准化
X ′ = x − m e a n σ X^{\prime}=\frac{x-mean}{\sigma} X′=σx−mean
- fit_transform()
将方法fit()
和方法transform()
进行封装,最终得到了方法fit_transform()
换而言之即是:
fit_transform() = fit() + transform()
- fit()
计算每一列的平均值、标准差,为利用公式计算 X ′ X^{\prime} X′做准备
- transform()
将方法fit()
计算出来的值代入公式中,最终计算出
X
′
X^{\prime}
X′的值
这几个方法之间的区别是什么呢?
我们看以下代码就清楚了
In [1]: from sklearn.preprocessing import StandardScaler
In [2]: std1 = StandardScaler()
In [3]: a = [[1,2,3], [4,5,6]]
In [4]: std1.fit_transform(a)
Out[4]:
array([[-1., -1., -1.],
[ 1., 1., 1.]])
In [5]: std2 = StandardScaler()
In [6]: std2.fit(a)
Out[6]: StandardScaler(copy=True, with_mean=True, with_std=True)
In [7]: std2.transform(a)
Out[7]:
array([[-1., -1., -1.],
[ 1., 1., 1.]])
从中可以看出,fit_transform的作用相当于transform加上fit。
但是为什么还要提供单独的fit呢, 我们还是使用原来的std2来进行标准化看看
In [8]: b = [[7,8,9], [10, 11, 12]]
In [9]: std2.transform(b)
Out[9]:
array([[3., 3., 3.],
[5., 5., 5.]])
In [10]: std2.fit_transform(b)
Out[10]:
array([[-1., -1., -1.],
[ 1., 1., 1.]])
预估器-sklearn机器学习算法的实现
预估器工作流程
- 实例化一个estimator类
- estimator.fit(x_train,y_train)
- 计算
- 做机器学习的训练
- 训练完毕之后生成模型
- 模型评估
- 直接比对真实值和预测值
y_predict = estimator.predict(x_test)
y_test == y_predict
- 计算准确率
accuracy = estimator.score(x_test, y_test)
- 直接比对真实值和预测值