sklearn分类器算法:逻辑回归及案例分析
分類算法之邏輯回歸
邏輯回歸(Logistic Regression),簡稱LR。它的特點是能夠是我們的特征輸入集合轉化為0和1這兩類的概率。一般來說,回歸不用在分類問題上,因為回歸是連續型模型,而且受噪聲影響比較大。如果非要應用進入,可以使用邏輯回歸。了解過線性回歸之后再來看邏輯回歸可以更好的理解。
優點:計算代價不高,易于理解和實現
缺點:容易欠擬合,分類精度不高
適用數據:數值型和標稱型
邏輯回歸
對于回歸問題后面會介紹,Logistic回歸本質上是線性回歸,只是在特征到結果的映射中加入了一層函數映射,即先把特征線性求和,然后使用函數g(z)將最為假設函數來預測。g(z)可以將連續值映射到0和1上。Logistic回歸用來分類0/1問題,也就是預測結果屬于0或者1的二值分類問題
映射函數為:
$$g\left({z}\right){=}\frac{1}{1+e^-z}$$
其中$$z{=}\theta{0}+\theta{1}{x{1}}+\theta{2}{x_{2}}{+...}$$
映射出來的效果如下如:
sklearn.linear_model.LogisticRegression
邏輯回歸類
class 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)""":param C: float,默認值:1.0:param penalty: 特征選擇的方式:param tol: 公差停止標準""" from sklearn.model_selection import train_test_split from sklearn.datasets import load_digits from sklearn.linear_model import LogisticRegression LR = LogisticRegression(C=1.0, penalty='l1', tol=0.01) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42) LR.fit(X_train,y_train) LR.predict(X_test) LR.score(X_test,y_test) 0.96464646464646464 # c=100.0 0.96801346801346799屬性
coef_
決策功能的特征系數
Cs_
數組C,即用于交叉驗證的正則化參數值的倒數
特點分析
線性分類器可以說是最為基本和常用的機器學習模型。盡管其受限于數據特征與分類目標之間的線性假設,我們仍然可以在科學研究與工程實踐中把線性分類器的表現性能作為基準。
邏輯回歸算法案例分析
良/惡性乳腺癌腫瘤預測
原始數據的下載地址為:https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/
數據預處理
import pandas as pd import numpy as np# 根據官方數據構建類別 column_names = ['Sample code number','Clump Thickness','Uniformity of Cell Size','Uniformity of Cell Shape','Marginal Adhesion','Single Epithelial Cell Size','Bare Nuclei','Bland Chromatin','Normal Nucleoli','Mitoses','Class'],data = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/',names = column_names)# 將?替換成標準缺失值表示 data = data.replace(to_replace='?',value = np.nan)# 丟棄帶有缺失值的數據(只要一個維度有缺失) data = data.dropna(how='any')data.shape處理的缺失值后的樣本共有683條,特征包括細胞厚度、細胞大小、形狀等九個維度
準備訓練測試數據
from sklearn.cross_validation import train_test_splitX_train,X_test,y_train,y_test = train_test_split(data[column_names[1:10]],data[column_names[10]],test_size=0.25,random_state=42)# 查看訓練和測試樣本的數量和類別分布 y_train.value_counts()y_test.value_counts()使用邏輯回歸進行良/惡性腫瘤預測任務
from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression# 標準化數據,保證每個維度的特征數據方差為1,均值為0。使得預測結果不會被某些維度過大的特征值而主導 ss = StandardScaler()X_train = ss.fit_transform(X_train) X_test = ss.transform(X_test)# 初始化 LogisticRegressionlr = LogisticRegression(C=1.0, penalty='l1', tol=0.01)# 跳用LogisticRegression中的fit函數/模塊來訓練模型參數 lr.fit(X_train,y_train)lr_y_predict = lr.predict(X_test)性能分析
from sklearn.metrics import classification_report# 利用邏輯斯蒂回歸自帶的評分函數score獲得模型在測試集上的準確定結果 print '精確率為:',lr.score(X_test,y_test)print classification_report(y_test,lr_y_predict,target_names = ['Benign','Maligant'])總結
以上是生活随笔為你收集整理的sklearn分类器算法:逻辑回归及案例分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python从图片里提取主要颜色
- 下一篇: Jquery基础知识