話不多說,直接上代碼
1 ''' 2 logistic regression 3 ''' 4 5 #導入需要的包 6 import pandas as pd 7 #建立數據集 8 from collections import OrderedDict 9 #是否通過考試用0和1表示,0表示未通過,1表示通過。 10 examDict={'學習時間':[0.50,0.75,1.00,1.25,1.50,1.75,1.75,2.00,2.25, 11 2.50,2.75,3.00,3.25,3.5,4.00,4.25,4.50,4.75,5.00,5.50], 12 '通過考試':[0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1]} 13 # 使用OrderedDict會根據放入元素的先后順序進行排序。所以輸出的值是排好序的 14 examOrderDict=OrderedDict(examDict) 15 examDf=pd.DataFrame(examOrderDict) 16 # examDf.head() 17 #在機器學習編碼中變量命名在變量后面加一個大寫的X表示特征,y表示標簽,通過后綴就可以看出哪些是特征和標簽。 18 #獲取特征 19 ''' 20 loc——通過行標簽索引行數據 21 iloc——通過行號索引行數據 22 ix——通過行標簽或者行號索引行數據(基於loc和iloc 的混合) 23 ''' 24 exam_X=examDf.loc[:,'學習時間'] 25 #獲取標簽 26 exam_y=examDf.loc[:,'通過考試'] 27 #建立訓練數據和測試數據 28 from sklearn.model_selection import train_test_split 29 X_train,X_test,y_train,y_test=train_test_split(exam_X,exam_y,test_size=.2) 30 #導入sklearn包邏輯回歸函數 31 from sklearn.linear_model import LogisticRegression 32 #創建邏輯回歸模型 33 model=LogisticRegression(solver='liblinear') 34 #訓練模型 35 ''' 36 機器學習包sklearn要求輸入的特征必須是一個二維數組的類型,這里只有一個特征, 37 需要進行重塑,否則會報錯,因此對訓練數據和測試數據的特征進行重塑。 38 ''' 39 X_train=X_train.values.reshape(-1,1) 40 X_test=X_test.values.reshape(-1,1) 41 model.fit(X_train,y_train) 42 43 #可以用model的predict_proba方法預測給定學習時間是否通過考試的概率 44 # model.predict_proba(3) 45 print(model.predict_proba([[5]]))