机器学习-交叉验证,模型选择与调优

1.交叉验证:让评估 模型更加准确可信

2.网格参数

通常情况下,很多参数需要手动指定,这种叫超参数。每组超参数都采用交叉验证来评估,最终选择最优参数组合来建立模型。

 如果有多组超参数,则需要进行两两相互验证

用交叉验证、网格搜索,找到KNN的最优模型参数

from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split, GridSearchCV
import pandas as pd

def knncls():
    """
    K近邻算法预测入住
    :return:None
    """
    #获取数据
    data = pd.read_csv("./train.csv")
    # print(data.head(10))


    #缩小数据量,查询数据筛选
    data = data.query("x>1.0 & x<1.25 & y>2.5 & y>2.75")   #刚好组成正方形
    time_value = pd.to_datetime(data['time'], unit='s')


    #把日期格式转换成字典格式
    time_value = pd.DatetimeIndex(time_value)

    #构造一些特征,提取天加入到data_sample的列里面
    data['day'] = time_value.day
    data['hour'] = time_value.hour
    data['weekday'] = time_value.weekday

    #删除时间戳保留 天 时 周
    data = data.drop(['time'], axis=1)
    print(data)

    #将签到数量少于n个的删除
    place_count = data.groupby('place_id').count()

    tf = place_count[place_count.row_id >3].reset_index()

    data = data[data['place_id'].isin(tf.place_id)]

    #取出数据中的特征值和目标值
    y = data['place_id'] #先把目标值拿出来

    x = data.drop(['place_id'], axis=1)

    #进行数据的分割成 训练集和测试集
    x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25)

    #特征工程(标准化) ,训练集和测试集的特征值都要做标准化
    std = StandardScaler()
    x_train = std.fit_transform(x_train)
    x_test = std.fit_transform(x_test)

    knn = KNeighborsClassifier()
    # #输入训练集构建模型
    # knn.fit(x_train, y_train)
    #
    # #得出预测结果
    # y_predict = knn.predict(x_test)
    # print('预测的未知ID为', y_predict)
    # #得到准确率
    # print("获得预测的准确率", knn.score(x_test, y_test))
    #指定一些参数
    param = {"n_neighbors": [3, 5, 10]}
    #进行网格搜索
    gc = GridSearchCV(knn, param_grid=param, cv=2 )
    gc.fit(x_train, y_train )
    print("评价测试集的准确率", gc.score(x_test, y_test) )
    print("在交叉验证中最好的结果", gc.best_score_ )
    print("选择最好的模型是", gc.best_estimator_ )
    print("每个超参数,每次交叉验证的结果", gc.cv_results_ )


    return None
if __name__ =="__main__":
    knncls()

 

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 机器学习模型评估、选择和验证是指评估模型的性能、从多个模型选择最佳模型,并验证模型的泛化能力。常用的评估方法包括准确率、精确率、召回率、F1 分数、ROC 曲线和 AUC 等。常用的选择方法包括交叉验证、超参数调优、学习曲线分析等。 ### 回答2: 机器学习的目标是通过训练来构建模型,以便能够高效地预测未知数据。但是,模型的准确性不仅取决于所使用的算法,还取决于其它因素,例如数据和参数设置。 模型评估能够帮助我们了解模型性能的好坏。评估算法的过程通常涉及到数据划分、交叉验证和各种评估指标。一般来说,数据划分的过程将数据集拆分成训练集和测试集。用训练集来构建模型并进行参数调整,然后使用测试集来衡量模型的性能。交叉验证是在数据集合上的一个更安全和更可靠的方法,它将原始数据集划分成K个互斥的子集,并使用K-1个子集来训练模型,用剩余的子集来评估模型的性能。 选择正确的模型非常关键,因为模型的性能可以直接影响结果的准确性。选择模型的一个重要因素是如何表示数据集。数据可以使用多种方式表示,而不同的数据表示方式有不同的优劣。选择适当的模型是当然的,但是我们还应该使用技术来优化模型,并防止模型过度拟合或欠拟合。 模型验证是评估模型如何执行任务的最终步骤。验证后,我们可以使用模型进行预测并将其应用于新数据。如果模型的性能不符合要求,可以通过重新评估、更改数据集或改变模型参数来尝试改善。模型验证是机器学习流程中非常重要的一部分,可以确保我们的模型效果良好,从而为我们提供可靠的预测结果。 总之,机器学习是一种建立复杂模型的方法,不同的算法、数据表示方式和参数会影响其性能。为了找到最佳模型,我们需要进行模型评估、选择和验证等工作。这些步骤是机器学习流程的关键组成部分,可以帮助我们构建高效且准确的模型,从而应对各种实际应用场景。 ### 回答3: 机器学习是一种人工智能领域的重要技术,它允许计算机从历史数据中学习,建立预测模型,并用于未来的数据预测和决策。模型评估、选择与验证是机器学习过程中的重要一环,以保证模型的准确性、稳定性和泛化能力。 模型评估的目的是检验模型的表现,并度量其优劣。常用的评估指标包括精确度、召回率、F1值等,这些指标可以用于比较不同模型之间的性能表现。评估模型时,通常需要将数据集划分为训练集和测试集,训练集用于训练模型,而测试集用于评估模型性能。评估模型的结果可以指导我们调整模型的参数,提高模型的预测精度。 模型选择是在多个模型选择最合适的模型。常用的模型选择方法包括交叉验证、留一法等。交叉验证是将数据集分成k个子集,每个子集轮流作为测试集进行模型评估,其余部分用于训练模型,最后将测试集误差取平均值作为综合误差来评估模型的性能。 模型验证是对模型的泛化能力的验证。泛化能力是指模型对未知数据的预测精度,即模型是否能够对新数据进行较好的预测。在模型验证中,需要将数据集划分为训练集、验证集和测试集。在训练集中训练模型,在验证集上调整模型参数,并在测试集上验证模型的泛化能力。常用的验证方法包括留存法、k折交叉验证等。 综上所述,模型评估、选择与验证对于机器学习中的预测模型非常重要。这些技术可以保证模型的准确性和稳定性,并提高模型的泛化能力,为数据分析和预测提供可靠依据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值