Python-绘图和线性回归-x和y的大小必须相同

时间:2018-07-05 16:34:41

标签: python plot scikit-learn linear-regression prediction

我正在用python和scikit自学一些技巧,并且正在尝试绘制线性回归模型。我的代码可以在下面看到。但是我的程序和控制台出现以下错误:x and y must be the same size。另外,我的程序将其放置到代码的末尾,但没有任何内容。

要解决尺寸错误,首先想到的是使用len(x) == len(y)之类的东西测试x和y的长度。但据我所知,我的数据似乎长度相同。也许错误是指长度以外的其他东西(如果是,我不确定是什么)。非常感谢您的帮助。

enter image description here

from sklearn import cross_validation
from sklearn.naive_bayes import GaussianNB
from sklearn.model_selection import train_test_split
from sklearn import linear_model
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# Create linear regression object
regr = linear_model.LinearRegression()

#load csv file with pandas
df = pd.read_csv("pokemon.csv")
#remove all string columns
df = df.drop(['Name','Type_1','Type_2','isLegendary','Color','Pr_Male','hasGender','Egg_Group_1','Egg_Group_2','hasMegaEvolution','Body_Style'], axis=1)

y= df.Catch_Rate

x_train, x_test, y_train, y_test = cross_validation.train_test_split(df, y, test_size=0.25, random_state=0)

# Train the model using the training sets
regr.fit(x_train, y_train)

# Make predictions using the testing set
pokemon_y_pred = regr.predict(x_test)

print (pokemon_y_pred)

# Plot outputs
plt.title("Linear Regression Model of Catch Rate")
plt.scatter(x_test, y_test,  color='black')
plt.plot(x_test, pokemon_y_pred, color='blue', linewidth=3)

plt.xticks(())
plt.yticks(())

plt.show()

2 个答案:

答案 0 :(得分:2)

这是指您的x变量具有多个维度的事实;绘图和散点图仅适用于2D绘图,似乎x_test具有多种功能,而y_testpokemon_y_pred是一维的。

答案 1 :(得分:0)

仅当您对一个y的x值更多不同而实际上x_test中的列比y_test相对多时,才会生成此错误,这就是为什么存在大小问题。 一个y:基本数学基础不应该有不同的x。