機器學習之LogisticRegression邏輯迴歸
阿新 • • 發佈:2018-11-23
- 機器學習之LogisticRegression邏輯迴歸
# -*- coding: utf-8 -*- """ Created on Wed Nov 21 20:31:59 2018 @author: muli """ import matplotlib.pyplot as plt import numpy as np from sklearn import datasets, linear_model,cross_validation def load_data(): ''' 載入用於分類問題的資料集 return: 一個元組,用於分類問題。 元組元素依次為:訓練樣本集、測試樣本集、訓練樣本集對應的標記、測試樣本集對應的標記 ''' iris=datasets.load_iris() # 使用 scikit-learn 自帶的 iris 資料集 X_train=iris.data y_train=iris.target # 分層取樣拆分成訓練集和測試集,測試集大小為原始資料集大小的 1/4 return cross_validation.train_test_split(X_train, y_train,test_size=0.25, random_state=0,stratify=y_train) def test_LogisticRegression(*data): ''' 測試 LogisticRegression 的用法 :param data: 可變引數。它是一個元組,這裡要求其元素依次為:訓練樣本集、測試樣本集、訓練樣本的標記、測試樣本的標記 :return: None ''' X_train,X_test,y_train,y_test=data regr = linear_model.LogisticRegression() # 模型訓練 regr.fit(X_train, y_train) # 返回 W值 和 b值 print('Coefficients:%s, intercept %s'%(regr.coef_,regr.intercept_)) # 返回預測的準確率 print('Score: %.2f' % regr.score(X_test, y_test)) def test_LogisticRegression_multinomial(*data): ''' 測試 LogisticRegression 的預測效能隨 multi_class 引數的影響 param data: 可變引數。 它是一個元組,這裡要求其元素依次為:訓練樣本集、測試樣本集、訓練樣本的標記、測試樣本的標記 return: None ''' X_train,X_test,y_train,y_test=data regr = linear_model.LogisticRegression(multi_class='multinomial',solver='lbfgs') regr.fit(X_train, y_train) print('Coefficients:%s, intercept %s'%(regr.coef_,regr.intercept_)) print('Score: %.2f' % regr.score(X_test, y_test)) def test_LogisticRegression_C(*data): ''' 測試 LogisticRegression 的預測效能隨 C 引數的影響 param data: 可變引數。 它是一個元組,這裡要求其元素依次為:訓練樣本集、測試樣本集、訓練樣本的標記、測試樣本的標記 return: None ''' X_train,X_test,y_train,y_test=data Cs=np.logspace(-2,4,num=100) scores=[] for C in Cs: regr = linear_model.LogisticRegression(C=C) regr.fit(X_train, y_train) scores.append(regr.score(X_test, y_test)) ## 繪圖 fig=plt.figure() ax=fig.add_subplot(1,1,1) ax.plot(Cs,scores) ax.set_xlabel(r"C") ax.set_ylabel(r"score") ax.set_xscale('log') ax.set_title("LogisticRegression") plt.show() if __name__=='__main__': # 載入用於分類的資料集 X_train,X_test,y_train,y_test=load_data() # 檢視原有的資訊形式 # print(X_train) # print("-------------") # print(y_train) # 呼叫 test_LogisticRegression # test_LogisticRegression(X_train,X_test,y_train,y_test) # 呼叫 test_LogisticRegression_multinomial # test_LogisticRegression_multinomial(X_train,X_test,y_train,y_test) # 呼叫 test_LogisticRegression_C test_LogisticRegression_C(X_train,X_test,y_train,y_test)