簡體   English   中英

Logistic回歸sklearn-訓練和應用模型

[英]Logistic regression sklearn - train and apply model

我是機器學習的新手,也是第一次嘗試Sklearn。 我有兩個數據框,一個數據框用於訓練邏輯回歸模型(具有10倍交叉驗證),另一個數據框用於使用該模型預測類(“ 0,1”)。 到目前為止,這是我的代碼,使用了我在Sklearn文檔和Web上發現的一些教程:

import pandas as pd
import numpy as np
import sklearn
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import KFold
from sklearn.preprocessing import normalize
from sklearn.preprocessing import scale
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import cross_val_predict
from sklearn import metrics


# Import dataframe with training data
df = pd.read_csv('summary_44.csv')
cols = df.columns.drop('num_class') # Data to use (num_class is the column with the classes)

# Import dataframe with data to predict
df_pred = pd.read_csv('new_predictions.csv')

# Scores
df_data = df.ix[:,:-1].values

# Target
df_target = df.ix[:,-1].values

# Values to predict
df_test = df_pred.ix[:,:-1].values

# Scores' names
df_data_names = cols.values

# Scaling
X, X_pred, y = scale(df_data), scale(df_test), df_target

# Define number of folds
kf = KFold(n_splits=10)
kf.get_n_splits(X) # returns the number of splitting iterations in the cross-validator

# Logistic regression normalizing variables
LogReg = LogisticRegression()

# 10-fold cross-validation
scores = [LogReg.fit(X[train], y[train]).score(X[test], y[test]) for train, test in kf.split(X)]
print scores

# Predict new
novel = LogReg.predict(X_pred)

這是實現Logistic回歸的正確方法嗎? 我知道在交叉驗證之后應該使用fit()方法,以便訓練模型並將其用於預測。 但是,由於我在列表理解內調用了fit(),所以我真的不知道我的模型是否“適合”並可以用來進行預測。

我一般情況還可以,但是有一些問題。

  1. 縮放

     X, X_pred, y = scale(df_data), scale(df_test), df_target 

您單獨縮放培訓和測試數據,這是不正確的。 兩個數據集必須使用相同的縮放器縮放。 “ Scale”是一個簡單的函數,但最好使用其他功能,例如StandardScaler。

scaler = StandardScaler()
scaler.fit(df_data)
X = scaler.transform(df_data)
X_pred = scaler.transform(df_test)
  1. 交叉驗證和預測。 您的代碼如何工作? 您將數據分為訓練和保持集10次; 將模型擬合到火車上10次,並計算保持套上的得分。 這樣,您將獲得交叉驗證得分,但模型僅適用於部分數據。 因此,最好在整個數據集上擬合模型,然后做出預測:

     LogReg.fit(X, y) novel = LogReg.predict(X_pred) 

我想注意到有一些先進的技術,例如堆疊和提升,但是如果您學習使用sklearn,則最好堅持基礎知識。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM