下面通过python的sklearn模块实践一下Logistic回归模型。
(4.1)Logistic回归模型的函数及参数如下所示:
import sklearn
sklearn.linear_model.LogisticRegression(penalty='l2',
dual=False, tol=0.0001, C=1.0, fit_intercept=True,
intercept_scaling=1, class_weight=None,
random_state=None, solver='liblinear', max_iter=100,
multi_class='ovr', verbose=0, warm_start=False, n_jobs=1)
(4.2)LogisticRegression类的常用方法如下所示:
fit(X, y, sample_weight=None)
- 拟合模型,用来训练LR分类器,其中X是训练样本,y是对应的标记向量;
- 返回对象,self;
fit_transform(X, y=None, **fit_params)
- fit与transform的结合,先fit后transform。返回
X_new
:numpy矩阵;
- fit与transform的结合,先fit后transform。返回
predict(X)
- 用来预测样本,也就是分类,X是测试集。返回array;
predict_proba(X)
- 输出分类概率。返回每种类别的概率,按照分类类别顺序给出。如果是多分类问题,multi_class="multinomial",则会给出样本对于每种类别的概率;
- 返回array-like;
score(X, y, sample_weight=None)
- 返回给定测试集合的平均准确率(mean accuracy),浮点型数值;
- 对于多个分类返回,则返回每个类别的准确率组成的哈希矩阵;
(4.3)实战
(4.3.1)加载模块
import numpy as np
from sklearn import linear_model, datasets
from sklearn.model_selection import train_test_split
(4.3.2)加载数据集
# 2. 加载数据
iris = datasets.load_iris()
x_data = iris.data
y_label = [1 if i>=1 else 0 for i in iris.target]
print("x_data: \n", x_data[:10])
print("\n")
print("label_data: \n",y_label[:10])
x_data数据有4个特征,y的值有两类(0和1);
(4.3.3)拆分数据集为:训练集和测试集
# 3. 拆分数据集
X_train, X_test, Y_train, Y_test = train_test_split(x_data, y_label, test_size=0.3, random_state=0)
(4.3.4)训练模型
# 4. 训练逻辑回归模型
log_reg = linear_model.LogisticRegression()
log_reg.fit(X_train, Y_train)
(4.3.5)在测试数据集上预测效果
# 5. 预测
test_data_proba = log_reg.predict_proba(X_test)
accuracy = log_reg.score(X_test, Y_test)
print("test data proba value: \n", test_data_proba[:10])
print("\n"*2)
print("test data true value: \n", Y_test[:10])
print("\n"*2)
print("test data accuracy is :", accuracy)
结果如下所示:
(a)预测的概率值,第一列为预测为0的概率,第二列预测为1的概率;
(b)可以看到Logistic模型的效果还不错哦,在测试集上的准确率为100%。