2

Ich arbeite an multivariable Regression von einem CSV, Vorhersage Ernte Leistung auf der Grundlage mehrerer Faktoren. Einige meiner Spalten sind numerisch und aussagekräftig. Andere sind numerisch und kategorisch oder Strings und kategorisch (zum Beispiel Pflanzensorte oder Plot-Code oder was auch immer). Wie unterrichte ich Python, um sie zu benutzen? Ich habe One Hot Encoder gefunden (http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html#sklearn.preprocessing.OneHotEncoder), verstehe aber nicht wirklich, wie man es hier anwendet.Python SciKitLearn und Pandas kategorische Daten

Mein Code so weit:

import pandas as pd 
import statsmodels.api as sm 
from sklearn.preprocessing import StandardScaler 
df = pd.read_csv('filepath.csv') 

df.drop(df[df['LabeledDataColumn'].isnull()].index.tolist(),inplace=True) 

scale = StandardScaler() 

pd.options.mode.chained_assignment = None # default='warn' 
X = df[['inputColumn1', 'inputColumn2', ...,'inputColumn20']] 
y = df['LabeledDataColumn'] 

X[['inputColumn1', 'inputColumn2', ...,'inputColumn20']] = scale.fit_transform(X[['inputColumn1', 'inputColumn2', ...,'inputColumn20']].as_matrix()) 

#print (X) 

est = sm.OLS(y, X).fit() 

est.summary() 
+1

für Sie tun auf den Daten aufrufen zu tun kategorische Daten sollten Sie scikit learn's Label-Encoder (http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.LabelEncod er.html) –

+0

@KevinK. Vielen Dank! Wie würde ich es auf dieses Beispiel anwenden, wenn es Ihnen nichts ausmacht, wenn ich frage? –

+0

Erstellen Sie einen neuen Label-Encoder 'le = LabelEncoder()', passen Sie ihn an Ihre Daten 'le.fit (df ['SomeColumn'])' an und transformieren Sie Ihre Daten 'df ['SomeColumn'] = le.transform (df [ 'SomeColumn']) ' –

Antwort

1

Sie die get_dummies Funktion Pandas bietet verwenden könnten und die kategorischen Werte konvertieren.

So etwas ..

predictor = pd.concat([data.get(['numerical_column_1','numerical_column_2','label']), 
          pd.get_dummies(data['categorical_column1'], prefix='Categorical_col1'), 
          pd.get_dummies(data['categorical_column2'], prefix='categorical_col2'), 
          axis=1) 

dann könnte man das Ergebnis/label Spalte erhalten, indem

outcome = predictor['label'] 
del predictor['label'] 

Dann das Modell

est = sm.OLS(outcome, predictor).fit() 
+0

Was ist mit so etwas? ' pd.factorize (df.featureX) transformed_featureX = pd.factorize (df.featureX) df [ 'transformed_featureX'] = transformed_featureX [0] .astype (float) # oder was auch immer auch int sein könnte ' –

+0

Well..get_dummies() ist viel einfacher. Probieren Sie es aus und lassen Sie mich wissen und bitte upvote, wenn Sie denken, dass es funktioniert. – Gayatri

+0

Es wirft einen Fehler: Datei "", Zeile 13 Achse = 1]) ^ Syntax: ungültige Syntax –

Verwandte Themen