当我used x = dataset.iloc[:,1:2].values
及以后在我的代码中
import matplotlib.pyplot as plt
import numpy as np
dataset = pd.read_csv('Position_Salaries.csv')
x = dataset.iloc[:,1:2].values #look here please
y = dataset.iloc[:,-1].values
from sklearn.svm import SVR
sv_regressor = SVR(kernel='rbf')
因此,当我改用x = dataset.iloc[:,1].values
时,出现了错误提示
“期望2d数组,而改为1d数组”
在sv_regresso行中
错误在sv_regressor
第w行,这就是为什么我标记了sklearn
答案 0 :(得分:3)
不同之处在于,使用dataset.iloc[:,1:2]
会得到DataFrame
,使用dataset.iloc[:,-1]
会得到Series
。当您将属性values
与DataFrame
一起使用时,将获得一个2d ndarray,而对于Series
将其得到一个1d ndarray。考虑以下示例:
A B C
0 0 2 0
1 1 0 0
2 1 2 1
系列:
type(df.iloc[:, -1])
# pandas.core.series.Series
df.iloc[:, -1].values.shape
# (3,)
DataFrame:
type(df.iloc[:, -1:])
# pandas.core.frame.DataFrame
df.iloc[:, -1:].values.shape
# (3, 1)
一步一步将目标变量作为2d ndarray是机器学习中的一个常见技巧。
答案 1 :(得分:0)
几乎相同,dataset.iloc[:,1:2]
为您提供2维数据帧(从1到2的列),dataset.iloc[:,1]
为您提供熊猫序列(1-d)(来自第1列)。 / p>