KNN Classifier ValueError: Unknown label type: 'continuous'
KNN Classifier ValueError: Unknown label type: 'continuous'
我们将引入一个额外的 20 维预测器,它在生成 .然而,在估计时,我们并不知道这个事实,因此将在 KNN 算法中同时使用 和 作为预测变量。
我们需要生成相同大小的 20 维预测变量。每个都是一个20维的多元正态随机变量,均值为(0,0,…,0)和恒等协方差矩阵(这样20个元素就是独立的标准正态随机变量)。结果是一个 100*20 矩阵,每行是一个 20 维的数据点对于固定 =15 ,拟合 KNN 模型以使用 (,) 进行预测,并测量训练和测试 MSE。 (1 分)
下面的代码有什么问题?
#training data
x = np.arange(0 , 5 , 0.05)
f_x = beta0 + beta1 * x + beta2 * x**2 + beta3 * x**3
epsilon = np.random.normal(loc=0, scale=sigma, size=100)
y = f_x + epsilon
## test data
x_test = np.arange(0 , 6, 0.1)
f_x_test = beta0 + beta1 * x_test + beta2 * x_test**2 + beta3 * x_test**3
epsilon_test = np.random.normal(loc=0, scale=sigma, size=len(x_test))
y_test = f_x_test + epsilon_test
z = np.random.multivariate_normal(size = 100, mean=[0]*20, cov=np.identity(20))
z_test = np.random.multivariate_normal(size = 60, mean=[0]*20, cov=np.identity(20))
train_x = np.concatenate((np.expand_dims(x, axis = 1),z),axis = 1)
test_x = np.concatenate((np.expand_dims(x_test, axis = 1),z_test),axis = 1)
from sklearn.neighbors import KNeighborsClassifier
from sklearn import preprocessing
knn = KNeighborsClassifier(n_neighbors = 15)
from sklearn.metrics import mean_squared_error
knn.fit(train_x,y)
y_pred_train = knn.predict(train_x)
y_pred_test = knn.predict(test_x)
mse_train = mean_squared_error(y,y_pred_train)
mse_test = mean_squared_error(y_test,y_pred_test)
而不是 KNeighborsClassifier
,试试 KNeighborsRegressor
knn_reg_model = KNeighborsRegressor(n_neighbors=k,algorithm='auto').fit(train_x,y.reshape(-1,1))
我们将引入一个额外的 20 维预测器,它在生成 .然而,在估计时,我们并不知道这个事实,因此将在 KNN 算法中同时使用 和 作为预测变量。
我们需要生成相同大小的 20 维预测变量。每个都是一个20维的多元正态随机变量,均值为(0,0,…,0)和恒等协方差矩阵(这样20个元素就是独立的标准正态随机变量)。结果是一个 100*20 矩阵,每行是一个 20 维的数据点对于固定 =15 ,拟合 KNN 模型以使用 (,) 进行预测,并测量训练和测试 MSE。 (1 分)
下面的代码有什么问题?
#training data
x = np.arange(0 , 5 , 0.05)
f_x = beta0 + beta1 * x + beta2 * x**2 + beta3 * x**3
epsilon = np.random.normal(loc=0, scale=sigma, size=100)
y = f_x + epsilon
## test data
x_test = np.arange(0 , 6, 0.1)
f_x_test = beta0 + beta1 * x_test + beta2 * x_test**2 + beta3 * x_test**3
epsilon_test = np.random.normal(loc=0, scale=sigma, size=len(x_test))
y_test = f_x_test + epsilon_test
z = np.random.multivariate_normal(size = 100, mean=[0]*20, cov=np.identity(20))
z_test = np.random.multivariate_normal(size = 60, mean=[0]*20, cov=np.identity(20))
train_x = np.concatenate((np.expand_dims(x, axis = 1),z),axis = 1)
test_x = np.concatenate((np.expand_dims(x_test, axis = 1),z_test),axis = 1)
from sklearn.neighbors import KNeighborsClassifier
from sklearn import preprocessing
knn = KNeighborsClassifier(n_neighbors = 15)
from sklearn.metrics import mean_squared_error
knn.fit(train_x,y)
y_pred_train = knn.predict(train_x)
y_pred_test = knn.predict(test_x)
mse_train = mean_squared_error(y,y_pred_train)
mse_test = mean_squared_error(y_test,y_pred_test)
而不是 KNeighborsClassifier
,试试 KNeighborsRegressor
knn_reg_model = KNeighborsRegressor(n_neighbors=k,algorithm='auto').fit(train_x,y.reshape(-1,1))