机器学习-线性回归-逻辑回归-实战-09
1. 二分类
#!/usr/bin/env python
# coding: utf-8
# In[7]:
import numpy as np
from sklearn import datasets
from sklearn.linear_model import LogisticRegression
isris = datasets.load_iris()
isris.keys(), isris["feature_names"], isris['target']
# In[8]:
X = isris['data'][:,3:] # 只取之后一个维度petal width (cm)
y = (isris["target"]==2).astype(np.int) # 是否是属于分类2 转化成 0 1
# In[10]:
log_reg = LogisticRegression(solver="sag", max_iter=1000)
log_reg.fit(X, y)
# In[17]:
X_new = np.linspace(0, 3, 1000).reshape(-1, 1)
y_proba = log_reg.predict_proba(X_new) # 预测是正样本的概率
y_hat = log_reg.predict(X_new) # 预测值 0 or 1
y_proba, y_hat
# In[ ]:
2. 多分类任务
医学图示(Medical diagrams):没生病(y=1),感冒(y=2),流感(y=3)
转化成多个二分类的 处理思路,
使用不同的函数去预测输入x,分别计算不同h(x)的值,然后取其中的最大值。哪个i对应的h(x)越大,就认为属于哪个类。
一个与其他的做区分
one-vs-rest
代码修改:
log_reg = LogisticRegression(C=1000, multi_class='ovr', solver="sag", max_iter=1000)
log_reg.fit(X, y)