2016-05-12 5 views
0

Ich verwende LogisticRegression, um das Titanic-Problem von kaggle.com zu modellieren. Ich möchte mehrere Variablen wie Alter, Geschlecht usw. verwenden, um meine Sigmoidfunktion zu modellieren. Das gleiche Verfahren funktioniert mit nur 1 Variable wie Sex, wenn verwendet, in Ordnung, aber es gibt die folgenden Fehler, wenn für mit mehreren Variablen verwendetenÜbergabe des Feature-Vektors an die logistische Regressionsfunktion von sklearn

TypeError: float() argument must be a string or a number, not 'method'

Meine Vermutung ist, dass ich nicht die reshape Methode richtig verwenden. PS: Ich bin ein Anfänger in Python und Sklearn-Bibliothek. Bitte geh einfach zu mir.

import pandas as pd 
from sklearn.linear_model import LogisticRegression 
import numpy as np 


df = pd.read_csv(r'C:\Users\abhi\Downloads\train.csv') 

df.Age = df.Age.fillna(df.Age.mean) 
df.Embarked = df.Embarked.fillna(df.Embarked.median) 
x1 = df.Pclass 
x2 = df.Sex 
for i in range(len(x2)): 
    if x2[i]=='male': 
     x2[i]=1 
    else: 
     x2[i]=0 
#female,male 0,1 

x3 = df.Age 
x4 = df.SibSp 
x5 = df.Parch 
x6 = df.Ticket 
x7 = df.Fare 
x9 = df.Embarked 
for i in range(len(x9)): 
    if x9[i]=='C': 
     x9[i]=0 
    elif x9[i]=='Q': 
     x9[i]=1 
    else :x9[i]=2 

# C,Q,S = 0,1,2 
# Creating a feature vector of multiple vectors 

i2 = pd.DataFrame() 
i2['Pclass'] = x1 
i2['Sex'] = x2 
i2['Age'] = x3 
i2['SibSp'] = x4 
i2['Parch'] = x5 
i2['Fare'] = x7 
i2['Embarked'] = x9 
i2 = np.array(i2) 
i2 = i2.reshape(-1,1) 

ytrain = df.Survived 
ytrain = np.array(ytrain) 
ytrain = ytrain.reshape(-1,1) 
c1 = LogisticRegression(penalty='l2',solver='liblinear') 
c1.fit(i2,ytrain,sample_weight=None) 
c1.score(i2,ytrain,sample_weight=None) 
+0

Sie konnten einen Blick auf http://hamelg.blogspot.in/2015/11/python-for-data-analysis-part-28.html –

Antwort

0

Können Sie Ihren Code mit dem Löschen dieser Zeile ausführen? i2 = i2.reshape(-1,1)

Reshape i2 zu (-1,1) wird mit der Länge der Gesamtzahl der Elemente in der i2i2 zu eindimensionales Array zu transformieren. Dies ist wahrscheinlich nicht das, was Sie tun möchten.

+0

haben auf dieser Linie zu entfernen ich diesen Fehler erhalte: Typeerror: Das Argument float() muss eine Zeichenfolge oder eine Zahl sein, nicht 'method' –

Verwandte Themen