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博客?

blog.csdn.net


推薦閱讀:

邏輯回歸的Python建模方法
用Python搭建一個如下的個人網站學習路線應該是怎麼樣的?
Python黑帽編程3.0 第三章 網路介面層攻擊基礎知識
PyPI 終於支持 Markdown 了
*吧上有海外留學生問全部用遞歸求第N個質數,不能用循環

TAG:機器學習 | Python | 邏輯回歸 |