python與機器學習入門(6)邏輯回歸
邏輯回歸: 一般來講,其實是用於研究某個事件的概率,輸出的結果往往是0或者1
而輸入又往往不止一個。
就是用幾個不同的因素去預測這個事件到底是發生,還是不發生。
在預測的過程中,用到的是神奇的sigmoid函數
還是來看一下購買商品與否的案例:一共有400行數據
第一列是買家的年齡,第二列是買家的薪水,第三列是結果(0代表買過,1代表未買)
我們將數據集分成兩部分。300個數據用作訓練集,其餘的用作測試集。
用邏輯回歸訓練這100個訓練集的買家到底是買還是不買!
- 數據處理
導入數據、設置自變數和因變數
dataset = pd.read_csv(S.csv)X = dataset.iloc[:, [0,1]].valuesy = dataset.iloc[:, 2].values
- 設置訓練集和測試集
設置訓練集和測試集X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2
- 用擬合器擬合數據
sc_X = StandardScaler()X_train = sc_X.fit_transform(X_train)X_test = sc_X.transform(X_test)
- 用訓練集擬合分類器
這裡的分類器仍舊是線性的
classifier = LogisticRegression(random_state = 0) #初始的分類器classifier.fit(X_train, y_train) #訓練集來擬合分類器
- 預測
y_pred = classifier.predict(X_test)
- 用混線矩陣檢驗性能
我這裡預測的結果有65+24個是正確的
錯誤的有8+3個
cm = confusion_matrix(y_test, y_pred)
- 作圖觀察
上面的8+3個錯誤的意思就是:
8代表 真實樣品結果為1 但是預測結果為0的樣品數
3 代表 真實結果為0 預測為1的樣品數
從圖中是可以數出來的,就是那幾個跑偏了的點
X_set, y_set = X_train, y_trainX1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() - 1, stop = X_set[:, 0].max() + 1, step = 0.01), np.arange(start = X_set[:, 1].min() - 1, stop = X_set[:, 1].max() + 1, step = 0.01))plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape), alpha = 0.75, cmap = ListedColormap((red, green)))plt.xlim(X1.min(), X1.max())plt.ylim(X2.min(), X2.max())for i, j in enumerate(np.unique(y_set)): plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1], c = ListedColormap((y, w))(i), label = j)plt.title(Training )plt.xlabel(Age)plt.ylabel(S)plt.legend()plt.show()X_set, y_set = X_test, y_testX1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() - 1, stop = X_set[:, 0].max() + 1, step = 0.01), np.arange(start = X_set[:, 1].min() - 1, stop = X_set[:, 1].max() + 1, step = 0.01))plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape), alpha = 0.75, cmap = ListedColormap((w, black)))plt.xlim(X1.min(), X1.max())plt.ylim(X2.min(), X2.max())for i, j in enumerate(np.unique(y_set)): plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1], c = ListedColormap((orange, blue))(i), label = j)plt.title(Test )plt.xlabel(Age)plt.ylabel(S)plt.legend()plt.show()
源碼與數據集的下載請移步:
機器學習(6)-邏輯回歸 - CSDN博客
推薦閱讀:
※邏輯回歸的Python建模方法
※用Python搭建一個如下的個人網站學習路線應該是怎麼樣的?
※Python黑帽編程3.0 第三章 網路介面層攻擊基礎知識
※PyPI 終於支持 Markdown 了
※*吧上有海外留學生問全部用遞歸求第N個質數,不能用循環