繁体   English   中英

KNN回归导致训练集(sklearn)的MSE为零

KNN Regression results in zero MSE on training set (sklearn)

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

使用sklearn并尝试使用以下代码评估KNN回归函数:

def cross_validate(X,y,n_neighbors, test_size=0.20):
    training_mses = []
    test_mses = []

    n = X.shape[ 0]
    test_n = int( np.round( test_size * n, 0))

    indices = np.arange(n)
    random.shuffle( indices)

    test_indices = indices[ 0:test_n]
    training_indices = indices[test_n:]


    X_test, y_test = X[test_indices], y[test_indices]
    X_train,y_train = X[training_indices], y[training_indices]

    knn = neighbors.KNeighborsRegressor(n_neighbors=n_neighbors, weights = "distance",
                                    algorithm = 'brute')
    model = knn.fit(X_train,y_train)
    y_hat = model.predict( X_train)
    training_mse = mse( y_train - y_hat)

    model2 = knn.fit(X_test,y_test)
    y_hat = model2.predict( X_test)
    test_mse = mse( y_test - y_hat)

    return training_mse, test_mse 

我对线性回归做了类似的事情。 我发现的区别是,当我在KNN回归上运行它时,training_mse和test_mse都为0。如果我在装有训练集的模型上使用测试数据,它会给我一个非零的mse值。 但是我只是不相信训练和测试集的拟合值与观察值相同。 我究竟做错了什么? 我尝试模拟的功能如下,并为mse提供了非零值:

def cross_validate( formula, data, test_size=0.20):
    training_mses = []
    test_mses = []

    n = data.shape[ 0]
    test_n = int( np.round( test_size * n, 0))

    indices = deepcopy( data.index).values
    random.shuffle( indices)

    test_indices = indices[ 0:test_n]
    training_indices = indices[test_n:]

    test_set = data.ix[ test_indices]
    training_set = data.ix[ training_indices]

    y, X = patsy.dmatrices( formula, training_set, return_type="matrix")
    model = linear.LinearRegression( fit_intercept=False).fit( X, y)
    y_hat = model.predict( X)

    training_mse = mse( y - y_hat)

    y, X = patsy.dmatrices( formula, test_set, return_type="matrix")
    y_hat = model.predict( X)

    test_mse = mse( y - y_hat)

    return training_mse, test_mse
问题暂未有回复.您可以查看右边的相关问题.
1 训练集的不同mse结果

对于mse我得到不同的结果。 在trainig训练期间,最后一次训练后得到0.296,评估模型时得到0.112。 有谁知道为什么会这样吗? 这是代码: 批次大小和所有内容保持不变。 有谁知道为什么我对mse会有如此不同的结果? ...

4 Logistic回归sklearn-训练和应用模型

我是机器学习的新手,也是第一次尝试Sklearn。 我有两个数据框,一个数据框用于训练逻辑回归模型(具有10倍交叉验证),另一个数据框用于使用该模型预测类(“ 0,1”)。 到目前为止,这是我的代码,使用了我在Sklearn文档和Web上发现的一些教程: 这是实现Logistic回归 ...

6 sklearn的线性回归+交叉验证模型训练

我是python sklearn的新手。 我了解交叉验证的基本知识。 如果我默认将数据拆分为3折。 sklearn将使用不同的训练和测试数据集对模型进行3次训练。 我假设它产生3个不同的模型,我的意思是不同的w ^和d ^。 这是正确的吗? 我应该只找回一个模型吗? 如果我使用mo ...

7 关于随着回归数据集的增加,交叉验证模型的 MSE 增加

我有以下用于回归问题的实验设置。 使用以下例程,将大约 1800 个条目的数据集分为三组:验证、测试和训练。 所以本质上,训练大小 ~ 1100,验证和测试大小 ~ 350,然后每个子集都有唯一的数据点集,这是在其他子集中看不到的。 有了这些子集,我可以使用 scikit-learn 提供的 ...

9 使用SKlearn预训练/重新训练内核岭回归

我目前正在对数据集的前30%训练Kernel Ridge回归模型,以预测后70%。 由于我有许多有点相似的数据集,因此我想使用一个已经训练好的模型(在整个数据集上训练),并将其拟合到一个新的数据集中,其中参数和权重不仅被覆盖,而且被调整为来自旧模型的新数据。 从SKlearns Kernel Rid ...

10 如何使用训练集进行回归

我想使用输入整洁的文本格式的训练数据框进行回归分析。 原始数据文件包括患有明显发育障碍的参与者和可能患有或可能没有发育障碍的参与者。 我从一个较大的整洁的文本数据框中创建了一个数据框,该数据框从文本文件中的关键字中挑选出来,并记录了该单词在文本文档中出现了多少次。 那些有明显残疾的人的名字 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM