0

初めて機械を学習してSklearnを試してみるのは初めてです。私は2つのデータフレームを持っています.1つはロジスティック回帰モデル(10倍交差検証あり)とそのモデルを使ってクラス( '0,1')を予測するためのデータです。ここ は、これまでのところ、私はSklearnドキュメント上やWeb上にあるチュートリアルのビットを使用して私のコードです:ロジスティック回帰sklearn - 列車と適用モデル

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) 

これはロジスティック回帰を実装するための正しい方法は何ですか? モデルをトレーニングして予測に使用するために、相互検証の後にfit()メソッドを使用する必要があることはわかっています。しかし、リストの理解の中でfit()を呼び出したので、私のモデルが "適合"されているかどうかわからず、予測をするのに使うことができます。

+0

いくつかのデータを投稿してください。 dfとdf_dataを出力する – skrubber

答えて

1

私は大丈夫ですが、いくつか問題があります。

  1. 正しくされていない、独立し

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

あなた規模な訓練とテストデータをスケーリング。両方のデータセットは同じスケーラーでスケーリングする必要があります。 「スケール」はシンプルな関数ですが、例えばStandardScalerなど他のものを使用する方がよいでしょう。

scaler = StandardScaler() 
scaler.fit(df_data) 
X = scaler.transform(df_data) 
X_pred = scaler.transform(df_test) 
  • クロス検証と予測

      。 コードの仕組みは?列車とホールドアウトに10回データを分割します。列車セットに10回フィットモデルを設定し、ホールドアウトセットのスコアを計算します。このようにして、クロスバリデーションスコアを取得しますが、モデルはデータの一部にのみ適合します。だから、データセット全体にモデルに適合して、予測を行う方が良いでしょう:

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

    、その後、私はスタッキング昇圧などの高度なテクニクスがあることに気づくしたいのですが、あなたはsklearnを使用して学習している場合基本に固執する方が良いです。

  • 関連する問題