当一维数组在执行 SVM 时出现预期错误时传递了列向量 y?
A column-vector y was passed when a 1d array was expected error while doing SVM?
我正在创建一个具有一个独立变量 X 和因变量的 SVM 模型 y.I 执行特征缩放,因为两个数据变量不在同一尺度上。
现在当我在数据集上训练模型时出现错误:
DataConversionWarning:在需要一维数组时传递了列向量 y。请将 y 的形状更改为 (n_samples, ),例如使用 ravel()。
y = column_or_1d(y, warn=True).
下面是我收到错误的代码片段:
# Building Model on whole dataset
from sklearn.svm import SVR
regressor = SVR(kernel='rbf')
regressor.fit(X,y)
整个文件:
# Importing Libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# import data Set
dataset = pd.read_csv('Position_Salaries.csv')
X = dataset.iloc[:, 1:-1].values
y = dataset.iloc[:, -1].values
# Feature Scaling
y = y.reshape(len(y), 1)
# Feature Scaling
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
sc_y = StandardScaler()
X = sc_X.fit_transform(X)
y = sc_y.fit_transform(y)
# Building Model on training dataset
from sklearn.svm import SVR
regressor = SVR(kernel='rbf')
regressor.fit(X,y)
我正在训练模型的文件
您有一项功能(变量),因此确实需要行 y = y.reshape(-1, 1)
。
# Importing Libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# import data Set
dataset = pd.read_csv('Position_Salaries.csv')
X = dataset.iloc[:, 1:-1].values
y = dataset.iloc[:, -1].values
y = y.reshape(-1, 1)
# Feature Scaling
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
sc_y = StandardScaler()
X = sc_X.fit_transform(X)
y = sc_y.fit_transform(y)
# Building Model on training dataset
from sklearn.svm import SVR
regressor = SVR(kernel='rbf')
regressor.fit(X,y)
验证模型是否已拟合:
regressor.get_params()
{'C': 1.0,
'cache_size': 200,
'coef0': 0.0,
'degree': 3,
'epsilon': 0.1,
'gamma': 'scale',
'kernel': 'rbf',
'max_iter': -1,
'shrinking': True,
'tol': 0.001,
'verbose': False}
您收到的警告是:
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:73:
DataConversionWarning: A column-vector y was passed when a 1d array
was expected. Please change the shape of y to (n_samples, ), for
example using ravel(). return f(**kwargs)
而且是DataConversionWarning
,说明算法没有收敛。
替换此行:
regressor.fit(X,y)
这一行:
regressor.fit(x,np.ravel(y,order="c"))
我正在创建一个具有一个独立变量 X 和因变量的 SVM 模型 y.I 执行特征缩放,因为两个数据变量不在同一尺度上。
现在当我在数据集上训练模型时出现错误:
DataConversionWarning:在需要一维数组时传递了列向量 y。请将 y 的形状更改为 (n_samples, ),例如使用 ravel()。 y = column_or_1d(y, warn=True).
下面是我收到错误的代码片段:
# Building Model on whole dataset
from sklearn.svm import SVR
regressor = SVR(kernel='rbf')
regressor.fit(X,y)
整个文件:
# Importing Libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# import data Set
dataset = pd.read_csv('Position_Salaries.csv')
X = dataset.iloc[:, 1:-1].values
y = dataset.iloc[:, -1].values
# Feature Scaling
y = y.reshape(len(y), 1)
# Feature Scaling
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
sc_y = StandardScaler()
X = sc_X.fit_transform(X)
y = sc_y.fit_transform(y)
# Building Model on training dataset
from sklearn.svm import SVR
regressor = SVR(kernel='rbf')
regressor.fit(X,y)
我正在训练模型的文件
您有一项功能(变量),因此确实需要行 y = y.reshape(-1, 1)
。
# Importing Libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# import data Set
dataset = pd.read_csv('Position_Salaries.csv')
X = dataset.iloc[:, 1:-1].values
y = dataset.iloc[:, -1].values
y = y.reshape(-1, 1)
# Feature Scaling
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
sc_y = StandardScaler()
X = sc_X.fit_transform(X)
y = sc_y.fit_transform(y)
# Building Model on training dataset
from sklearn.svm import SVR
regressor = SVR(kernel='rbf')
regressor.fit(X,y)
验证模型是否已拟合:
regressor.get_params()
{'C': 1.0,
'cache_size': 200,
'coef0': 0.0,
'degree': 3,
'epsilon': 0.1,
'gamma': 'scale',
'kernel': 'rbf',
'max_iter': -1,
'shrinking': True,
'tol': 0.001,
'verbose': False}
您收到的警告是:
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py:73: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel(). return f(**kwargs)
而且是DataConversionWarning
,说明算法没有收敛。
替换此行:
regressor.fit(X,y)
这一行:
regressor.fit(x,np.ravel(y,order="c"))