《老饼讲解机器学习》https://www.bbbdata.com/text/47
目录
逻辑回归一般用来作二分类问题
下面是用sklearn的逻辑回归包作二分类的一个例子。
一.问题
现已采集150组 乳腺癌数据:乳腺癌类别(恶性,良性)与四个特征(平均平滑度、平均紧凑度、平均凹面、平均凹点)。
则我们可以通过采集的数据训练一个决策模型,之后就可以用模型预测乳腺癌是良性还是恶性
数据如下(即sk-learn中的breast_cancer数据):
mean smoothness | mean compactness | mean concavity | mean concave points | 是否良性 |
---|---|---|---|---|
0.1184 | 0.2776 | 0.3001 | 0.1471 | 0 |
0.08474 | 0.07864 | 0.0869 | 0.07017 | 0 |
0.1096 | 0.1599 | 0.1974 | 0.1279 | 0 |
... | ... | ... | ... | ... |
0.08752 | 0.07698 | 0.04751 | 0.03384 | 1 |
0.08637 | 0.04966 | 0.01657 | 0.01115 | 1 |
0.07685 | 0.06059 | 0.01857 | 0.01723 | 1 |
0.08261 | 0.04751 | 0.01972 | 0.01349 | 1 |
... | ... | ... | ... | ... |
0.09752 | 0.1141 | 0.09388 | 0.05839 | 0 |
0.09488 | 0.08511 | 0.08625 | 0.04489 | 0 |
... | ... | ... | ... | ... |
0.08455 | 0.1023 | 0.09251 | 0.05302 | 0 |
0.1178 | 0.277 | 0.3514 | 0.152 | 0 |
0.05263 | 0.04362 | 0.0 | 0.0 | 1 |
breast_cancer原数据中有30个特征,为方便,我们这里只选4个。
二.流程与代码
(一) 流程
1.数据归一化(用sklearn的逻辑回归一般要作数据归一化)
2.用归一化数据训练逻辑回归模型
3.用训练好的逻辑回归模型预测。
(二) 代码
from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
import numpy as np
#----数据加载------
data = load_breast_cancer()
X = data.data[:,4:8]
y = data.target
#----数据归一化------
xmin=X.min(axis=0)
xmax=X.max(axis=0)
X_norm=(X-xmin)/(xmax-xmin)
#-----训练模型--------------------
clf = LogisticRegression(random_state=0)
clf.fit(X_norm,y)
#------模型预测-------------------------------
pred_y = clf.predict(X_norm) # 预测类别
pred_prob_y = clf.predict_proba(X_norm)[:,1] # 预测属于1类的概率
print( "模型系数(对应归一化数据):",clf.coef_[0])
print( "模型阈值(对应归一化数据):",clf.intercept_)
print( "模型准确率:",(pred_y== y).sum()/len(y))
运行结果:
模型系数(对应归一化数据): [ 0.18783816 -1.11495824 -3.6342363 -7.06872446]
模型阈值(对应归一化数据): [3.27959399]
模型准确率: 0.8980667838312829
注意:这里的模型系数是归一化后数据对应的模型系数。
相关文章