下面通過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%。