sklearn库是一个强大的机器学习库,几乎所有机器学习的算法都可以用这个库来实现,接下来我们开始学习这个库。
线性模型
如果我们想要处理线性回归的问题,先要导进来线性回归的模型。
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
即首先从线性的model中导入线性回归的模型。然后将其赋给变量lr,在赋给变量lr之后,模型就已经拿到手了,我们就可以拿来使用了。
接下来我们要做的是训练数据,使数据拟合这个线性模型,使用的方法为:
lr.fit(inputs, outputs)
inputs:输入的数据,通常来说是一个m,n的矩阵,m代表样本的个数,n则是一个样本中有多少个特征。
outputs:标签数据,即分类信息,可能是列向量的形式(单标签),也可能是矩阵的形式(多标签)。
完成了训练操作后就可以进行预测了,预测函数:
lr.predict(test)
test是需要预测的数据,特征数目必须与inputs中的保持一致。
即每一个计算出的值减去正确的值平方后相加,然后再除以数据的项数,在sklearn中提供了参数:
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_, y)
print(mse)
首先从metrics模块中导出均方误差的项,然后就可以求解误差了。
y_:正确的标签结果
y:计算出的结果,即lr.predict(test)。‘
y_和y的顺序没有规定,可以调换。
如果想要得到w和b的值,只需要调用:
lr.coef_ #w
lr.intercept_ #b
逻辑回归
逻辑回归是应用非常广泛的一个分类机器学习算法,它将数据拟合到一个logit函数(或者叫做logistic函数)中,从而能够完成对事件发生的概率进行预测。
对于线性回归wx的结果,我们做两个步骤:
1、将所有得分值wx都转换为正值,这里采用指数次幂exp(t)
2、对于每一个类别的得分都压缩到0~1的区间上,这里是一个概率的问题,即:t/(t+1)
然后讨论怎么使用sklearn实现它们:·
from sklearn.linear_model import LogisticRegression
logist_model = LogisticRegression()
logist_model.fit(inputs, labels)
可以看出,这和线性回归是很相似的,都是在线性model中导入逻辑回归的模型,然后赋给变量,再进行训练。
然而它们的不同在这里:
pre_probs = logist_model.predict_log_proba(tests)
print(pre_probs[:,1])
print(pre_probs[:,0])
pre_labels = logist_model.predict(tests)
print(pre_labels)
当采用predict_log_proba的方法时,得到的是一个概率,pre_probs[:,1]代表归类为1的概率,而pre_probs[:,0]代表归类为0的概率,得到的图像是这样的:这个和sigmoid函数的图像是有关系的,我们假设归类为1的概率大于0.5则为1,小于0.5为0,就可以以0.5为阶来分类,具体取阶需要根据具体的惩罚机制。