sklearn错误:" X和y具有不兼容的形状。"

时间:2015-05-23 06:22:15

标签: python python-3.x scikit-learn

scikit的新手学习。我试图对某些组成的数据进行逻辑回归,但是我得到错误" X和y具有不兼容的形状。 X有1个样本,但y有6个。"

import pandas as pd
from sklearn.linear_model import LogisticRegression

# Create a sample dataframe
data = [['Age', 'ZepplinFan'], [13 , 0], [40, 1], [25, 0], [55, 0], [51, 1], [58, 1]]
columns=data.pop(0)
df = pd.DataFrame(data=data, columns=columns)

# Fit Logistic Regression
lr = LogisticRegression()
lr.fit(X=df.Age.values, y = df.ZepplinFan)

This post表示我需要以某种方式将df.Age.values重塑为(n_samples,1)。我该怎么做?

1 个答案:

答案 0 :(得分:1)

形状很重要。一种方法是传递像

这样的列
In [24]: lr.fit(df[['Age']], df['ZepplinFan'])
Out[24]:
LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
          intercept_scaling=1, penalty='l2', random_state=None, tol=0.0001)

如果你想显式传递值,那么你可以

In [25]: lr.fit(df[['Age']].values, df['ZepplinFan'].values)
Out[25]:
LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
          intercept_scaling=1, penalty='l2', random_state=None, tol=0.0001)

或者您可以newaxis使用现有的语法,例如

In [26]: lr.fit(df.Age.values[:,np.newaxis], df.ZepplinFan.values)
Out[26]:
LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
          intercept_scaling=1, penalty='l2', random_state=None, tol=0.0001)