Python 如何从scikit学习玩具数据集预测数据

Python 如何从scikit学习玩具数据集预测数据,python,pandas,matplotlib,machine-learning,scikit-learn,Python,Pandas,Matplotlib,Machine Learning,Scikit Learn,我正在学习机器学习,我正在尝试分析scikit糖尿病玩具数据库。在本例中,我想将默认的束对象更改为数据帧对象。我尝试使用参数作为_frame=True,它确实将对象类型更改为DataFrame 在那之后,我对数据进行了训练,当我试图绘制数据时,问题就出现了: import matplotlib.pyplot as plt import pandas as pd import numpy as np from sklearn import datasets, linear_model from s

我正在学习机器学习,我正在尝试分析scikit糖尿病玩具数据库。在本例中,我想将默认的束对象更改为数据帧对象。我尝试使用参数作为_frame=True,它确实将对象类型更改为DataFrame

在那之后,我对数据进行了训练,当我试图绘制数据时,问题就出现了:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from sklearn import datasets, linear_model
from sklearn.model_selection import train_test_split

dataset = datasets.load_diabetes(as_frame=True)

X = dataset.data
y = dataset.target

y = y.to_frame()

X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.8, random_state=42)

regressor = linear_model.LinearRegression()
regressor.fit(X_train, y_train)

plt.scatter(X_train, y_train, color='blue')
plt.plot(X_train, regressor.predict(X_test), color='red')
问题是当我试图使用matplotlib绘制它时,因为as_frame=True返回(数据,目标),其中数据是DataFrame对象,目标是Series

Traceback (most recent call last):
  File "C:/Users/Kelvin/OneDrive/Documents/analytics/diabetes-sklearn/test.py", line 19, in <module>
    plt.scatter(X_train, y_train, color='blue')
  File "C:\Users\Kelvin\OneDrive\Desktop\analytics\lib\site-packages\matplotlib\pyplot.py", line 3037, in scatter
    __ret = gca().scatter(
  File "C:\Users\Kelvin\OneDrive\Desktop\analytics\lib\site-packages\matplotlib\__init__.py", line 1352, in inner
    return func(ax, *map(sanitize_sequence, args), **kwargs)
  File "C:\Users\Kelvin\OneDrive\Desktop\analytics\lib\site-packages\matplotlib\axes\_axes.py", line 4478, in scatter
    raise ValueError("x and y must be the same size")
ValueError: x and y must be the same size
回溯(最近一次呼叫最后一次):
文件“C:/Users/Kelvin/OneDrive/Documents/analytics/diabetes sklearn/test.py”,第19行,在
plt.散射(X_列,y_列,颜色为蓝色)
文件“C:\Users\Kelvin\OneDrive\Desktop\analytics\lib\site packages\matplotlib\pyplot.py”,第3037行,分散显示
__ret=gca()。散布(
文件“C:\Users\Kelvin\OneDrive\Desktop\analytics\lib\site packages\matplotlib\\uuuu init\uuuu.py”,第1352行,在内部
return func(ax,*map(sanitize_序列,args),**kwargs)
文件“C:\Users\Kelvin\OneDrive\Desktop\analytics\lib\site packages\matplotlib\axes\\u axes.py”,第4478行,分散显示
raise VALUE ERROR(“x和y的大小必须相同”)
ValueError:x和y的大小必须相同

所以,我的问题是,如果有方法可以将整个数据更改为数据帧,就像我们如何使用pd.read\u csv()获取数据一样?

这已经是一个数据帧,那么您会得到错误,因为您正在用y\u列绘制X\u列,并且X\u列有多个列

但是,如果您希望将数据集保存在csv文件中,则可以使用此代码

X.to_csv('train_data.csv')

这会将该数据集保存到您工作目录中的csv文件中。现在您可以在
train\u data.csv
上使用
pd.read\u csv

您无法绘制X\u train vs y\u train,因为X\u train有多个列。如果它只是一列,您可以绘制X\u train