精华内容
下载资源
问答
  • 一元回归预测

    2018-05-30 21:43:34
    预测 一元回归预测 预测 一元回归预测 预测 一元回归预测 预测 一元回归预测
  • 利用线性回归预测波士顿房价

    千次阅读 多人点赞 2021-03-12 14:37:20
    利用线性回归预测波士顿房价原理简介代码分析导入相关的工具包加载数据集模型训练和预测预测结果可视化全部代码 我们现在开始学习这门课程的第一个AI程序:利用线性回归预测波士顿房价。 原理简介 如果你之前没有...


    我们现在开始学习这门课程的第一个AI程序:利用线性回归预测波士顿房价。

    原理简介

    如果你之前没有听说过线性回归这个概念,那么在这节课中,你只需要把它当做是一次线性函数 y = kx+b 就可以了。我们要做的就是利用已有数据,去学习得到这条直线,有了这条直线,则对于横坐标 x 的任意取值,我们都可以找到直线上对应的 y 值,也就是模型的预测值。

    线性回归
    图中的直线 y = kx+b 是第 1 节课中提到的体重预测模型,它是最简单的线性回归模型。这节课我们要学习的房价预测模型也是 y = kx+b 这个形式,输入特征 x 是住宅平均房间数,输出标记 y 是波士

    展开全文
  • pso_lssvm回归预测

    2018-06-12 16:41:24
    pso_lssvm回归预测matlab代码pso_lssvm回归预测matlab代码
  • Python-Tensorflow2.3.0-多元线性回归预测(学习笔记),预测数据
  • 机器学习回归预测Introduction: The applications of machine learning range from games to autonomous vehicles; one very interesting application is with education. With machine learning, regression ...

    机器学习回归预测

    Introduction: The applications of machine learning range from games to autonomous vehicles; one very interesting application is with education. With machine learning, regression algorithms, we can use a student dataset to predict the grades of students in their exams. This is an interesting application as it allows the teachers to be able to predict students grades early before the exams and find ways to assist the students who are not expected to perform so well. This article provides a detail explanation of how to use python to carry out this machine learning prediction task.

    介绍: 机器学习的应用范围从游戏到自动驾驶汽车; 一个非常有趣的应用是教育。 通过机器学习,回归算法,我们可以使用学生数据集来预测学生在考试中的成绩。 这是一个有趣的应用程序,它使教师能够在考试前及早预测学生的成绩,并找到方法来帮助那些表现不佳的学生。 本文详细说明了如何使用python来执行此机器学习预测任务。

    Dataset: This study considers data collected during the 2005–2006 school year from two public schools, from the Alentemol region of Portugal. The database was built from two sources: school reports, and questionnaires, related to several demographic (.e.g. Mother’s education, family income), social/emotional (e.g. alcohol consumption) and school related (e.g. number of past class failures) variables that are expected to affect student performance.

    资料集: 本研究考虑了2005-2006学年期间从葡萄牙阿连特莫尔地区的两所公立学校收集的数据。 该数据库由两个来源建立:学校报告和调查表,与以下几个人口统计指标(例如母亲的学历,家庭收入),社会/情感(例如饮酒)和学校相关(例如上课失败的次数)相关预期会影响学生的表现。

    The datasets used for this project is publicly available on Kaggle and can be downloaded with these urls:

    该项目使用的数据集可在Kaggle上公开获得,并可使用以下网址下载:

    - https://www.kaggle.com/ozberkgunes/makineogrenmesiodev2-student-grande-prediction/data

    -https://www.kaggle.com/ozberkgunes/makineogrenmesiodev2-student-grande-prediction/data

    - https://www.kaggle.com/imkrkannan/student-performance-data-set-y-uci

    -https://www.kaggle.com/imkrkannan/student-performance-data-set-y-uci

    The dimensions in the dataset are all explained and summarized in the table below.

    下表中解释并总结了数据集中的维度。

    Data Pre-processing: Before we can apply our regression algorithms on our dataset, we first need to pre-process our dataset to make sure we have handled both empty and categorical values.

    数据预处理: 在将回归算法应用于数据集之前,我们首先需要对数据集进行预处理,以确保我们处理了空值和分类值。

    Firstly, we check for the empty values in our dataset by using the isnull and sum function as shown in the code snippet below.

    首先,如下面的代码片段所示,我们使用notull和sum函数检查数据集中的空值。

    Image for post
    Code snippet for reading dataset and checking for null values
    用于读取数据集并检查空值的代码段

    We find out we only have 1 empty values for each column; we figure out we have an insignificant number of empty rows, hence we simply drop all empty columns by using the dropna function.

    我们发现每一列只有1个空值; 我们发现空行的数量微不足道,因此我们只需使用dropna函数删除所有空列。

    Image for post
    Code Snippet for dropping all null columns 用于删除所有空列的代码段

    Selecting the Columns to Use for Regression Using Correlation:There are many ways to select the columns for regression; some of these ways include using p values, using their correlation, or using a feature selection method. In this case, our target column is G3 (the final exam result for the students), we decided to make use of a heatmap showing the correlation between all columns.

    使用相关性选择要用于回归的列: 有很多方法可以选择要回归的列。 其中一些方法包括使用p值,使用它们的相关性或使用特征选择方法。 在这种情况下,我们的目标列是G3(学生的期末考试成绩),我们决定使用显示所有列之间相关性的热图。

    Image for post
    Code snippet to create correlation heat map
    代码段以创建关联热图

    From the heat map we find that the columns with the most relevant correlation to G3 are G1,G2, Medu and failures and hence these are the columns we will use for our regression. G1 and G2 represent the student’s performance in previous assessments. This is not surprising as we would expect students who perform well to most likely perform well, again, in the final assessment. Medu represents the mothers level of education, while failures represents the number of assessments previously failed by the student. Both these two properties are not surprisingly as anyone would expect a student with very few previously failed courses to do well in an exam.

    从热图中,我们发现与G3最相关的列是G1,G2,Medu和failures ,因此这些是我们将用于回归的列。 G1和G2代表学生在以前的评估中的表现。 这并不奇怪,因为我们期望表现良好的学生在最终评估中再次表现出色。 Medu代表母亲的教育程度,而失败则代表学生先前未通过的评估数量。 这两个属性都不令人惊讶,因为任何人都希望以前很少通过课程的学生在考试中表现出色。

    Image for post

    Applying Regression Algorithm:The selected columns are all non-categorical values so no need to use any method i.e. one hot encoding to handle categorical data hence we can move straight to applying our regression algorithm on our dataset with our selected columns (G1,G2, Medu and failures).

    应用回归算法: 选定的列都是非分类值,因此无需使用任何方法,即使用一种热编码来处理分类数据,因此我们可以直接将回归算法应用到具有选定列( G1,G2,Medu和failures )的数据集上。

    I created a function to run the regression models, it accepts the algorithms names as parameter along with the regression objects and prints out the resulting model’s accuracy and RMSE.

    我创建了一个运行回归模型的函数,它接受算法名称作为参数以及回归对象,并打印出结果模型的准确性和RMSE。

    Image for post

    For this project I selected 5 different regression algorithms to use on the dataset:

    对于此项目,我选择了5种不同的回归算法以用于数据集:

    - Linear regression

    -线性回归

    - Ridge regression

    -岭回归

    - Lasso regression

    -套索回归

    - Elastic Net regression

    -弹性净回归

    - Orthogonal Matching Pursuit CV regression

    -正交匹配追踪CV回归

    Before proceeding to training our regression models, we need to split our dataset into the training and testing data. This is very important as we don’t want to train and test our model with the same set of data hence the need for the split. We achieve this we the code snippet below:

    在继续训练回归模型之前,我们需要将数据集分为训练和测试数据。 这一点非常重要,因为我们不想使用相同的数据集来训练和测试模型,因此不需要拆分。 我们通过以下代码片段实现了这一目标:

    Image for post

    We simply create an array of these regression models and pass it to the run _reg_models function as shown in the code snippet below:

    我们只需创建一个这些回归模型的数组,然后将其传递给run _reg_models函数,如下面的代码片段所示:

    Image for post

    Results and Future Works:

    结果和未来工作:

    Image for post

    The table above shows the resulting accuracies for the different regressor models with Linear, ridge and Orthogonal matching pursuit CV having the highest accuracy of 82% and the others at 81%. There is not a lot of difference between the different regression models both with their accuracy and RMSE.

    上表显示了具有线性,脊形和正交匹配追踪CV的不同回归模型的最终精度,其最高精度为82%,其他精度为81%。 不同的回归模型在准确性和均方根误差方面没有太大差异。

    An accuracy of 82% is okay but we would still need to fine tune the hyper-parameters i.e. test with different parameters for the different regression algorithms. If we do this, we may get higher accuracy values. It’s also important to note that this is not the final accuracy, we would still need to test our model(s) with external datasets to see how robust our model is.

    82%的精度是可以的,但是我们仍然需要微调超参数,即针对不同的回归算法使用不同的参数进行测试。 如果这样做,我们可能会获得更高的精度值。 同样重要的是要注意,这不是最终的准确性,我们仍然需要使用外部数据集测试模型,以查看模型的健壮性。

    There are many ways to select a model i.e. time to train model, time to predict and many other methods, but in this case we will use the model with the least RMSE as they all have similar accuracies and all take a similar time to run.

    选择模型的方法有很多,例如训练模型的时间,预测的时间和许多其他方法,但是在这种情况下,我们将使用具有最小RMSE的模型,因为它们具有相似的精度并且都需要相似的时间来运行。

    Our selected model is the Orthogonal pursuit as it has the lowest RMSE. In the future, we will play around with the hyperparameters in order to see how much of a difference it makes with both the accuracy and RMSE and if it makes a high difference, we will use redo our model selection.

    我们选择的模型是正交追求,因为它具有最低的RMSE。 将来,我们将研究超参数,以了解它对精度和均方根误差的影响有多大,如果影响很大,我们将使用重做模型选择。

    A future work will be to test our models with an external dataset (any dataset like this but one that our model has not been trained with before) and see how well our model performs. It is also important to note that the dataset used in this article was from a study carried out 15 years ago, another possible future works will be to find a newer dataset and to test our model on it and see the result.

    未来的工作将是使用外部数据集(这样的任何数据集,但我们以前从未对其进行过训练的数据集)来测试我们的模型,并查看模型的性能如何。 还需要注意的是,本文中使用的数据集来自15年前进行的一项研究,未来的另一项可能的工作是找到一个更新的数据集并在其上测试我们的模型并查看结果。

    Extra: Using A Model For Prediction

    附加:使用模型进行预测

    It’s interesting that most articles don’t include a section where they show case the prediction abilities of the model. Here, I have added this section so anyone who is a bit confused understands exactly how to use our models for predictions. Our selected model is the Orthogonal Matching Pursuit CV and hence it is what we use for the prediction as shown with the code snippet below:

    有趣的是,大多数文章都没有包含展示模型预测能力的章节。 在这里,我添加了本节,以便任何有点困惑的人都能准确地了解如何使用我们的模型进行预测。 我们选择的模型是Orthogonal Matching Pursuit CV,因此它是我们用于预测的模型,如下面的代码片段所示:

    Image for post
    Code snippet for using our selected model for making predictions
    使用我们选择的模型进行预测的代码片段

    Our regressor isn’t a 100% accurate but it’s pretty close and hence could be really used to predict the grades of students quite well.

    我们的回归指标并不是100%准确的,但它非常接近,因此可以真正用来很好地预测学生的成绩。

    It’s possible to use the other models to also make predictions and it’s something you might be interested in trying out as an extra exercise.

    可以使用其他模型进行预测,这可能是您有兴趣尝试做为额外练习的事情。

    Thank you for reading my article, please reach out to me if you have any questions to ask.

    感谢您阅读我的文章,如果您有任何疑问请与我联系。

    翻译自: https://medium.com/@kole.audu/predicting-high-school-students-grades-with-machine-learning-regression-3479781c185c

    机器学习回归预测

    展开全文
  • matlab线性回归预测

    2013-03-19 10:49:49
    matlab函数实现数据拟合,进行线性回归预测分析。
  • 应用线性回归预测医疗费用,内含详细讲解及代码。
  • matlab关于SVM的回归预测分析(上证指数开盘指数预测)相关代码
  • 根据以上描述,我们很容易可以判断出这是一个回归预测类的问题。当然,要想进行预测,我们首先要做的就是先看看数据的格式以及内容(由于参数太多,我就不一一列举了,大家可以直接去网上看,下面我简单贴个图): ...

    前天偶然在一个网站上看到一个数据分析的比赛(sofasofa),自己虽然学习一些关于机器学习的内容,但是并没有在比赛中实践过,于是我带着一种好奇心参加了这次比赛。

    赛题:足球运动员身价估计


    比赛概述

    本比赛为个人练习赛,主要针对于于数据新人进行自我练习、自我提高,与大家切磋。

    练习赛时限:2018-03-05 至 2020-03-05

    任务类型:回归

    背景介绍: 每个足球运动员在转会市场都有各自的价码。本次数据练习的目的是根据球员的各项信息和能力值来预测该球员的市场价值。

    这里写图片描述
    根据以上描述,我们很容易可以判断出这是一个回归预测类的问题。当然,要想进行预测,我们首先要做的就是先看看数据的格式以及内容(由于参数太多,我就不一一列举了,大家可以直接去网上看,下面我简单贴个图):
    这里写图片描述

    简单了解了数据的格式以及大小以后,由于没有实践经验,我就凭自己的感觉,单纯的认为一下几个字段可能是最重要的:

    字段含义
    club该球员所属的俱乐部。该信息已经被编码。
    league该球员所在的联赛。已被编码。
    potential球员的潜力。数值变量。
    international_reputation国际知名度。数值变量。

    巧合的是刚好这些字段都没有缺失值,我很开心啊,心想着可以直接利用XGBoost模型进行预测了。具体XGBoost的使用方法,可以参考:XGBoost以及官方文档XGBoost Parameters。说来就来,我开始了coding工作,下面就贴出我的第一版代码:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @File  : soccer_value.py
    # @Author: Huangqinjian
    # @Date  : 2018/3/22
    # @Desc  :
    
    import pandas as pd
    import matplotlib.pyplot as plt
    import xgboost as xgb
    import numpy as np
    from xgboost import plot_importance
    from sklearn.preprocessing import Imputer
    
    
    def loadDataset(filePath):
        df = pd.read_csv(filepath_or_buffer=filePath)
        return df
    
    
    def featureSet(data):
        data_num = len(data)
        XList = []
        for row in range(0, data_num):
            tmp_list = []
            tmp_list.append(data.iloc[row]['club'])
            tmp_list.append(data.iloc[row]['league'])
            tmp_list.append(data.iloc[row]['potential'])
            tmp_list.append(data.iloc[row]['international_reputation'])
            XList.append(tmp_list)
        yList = data.y.values
        return XList, yList
    
    
    def loadTestData(filePath):
        data = pd.read_csv(filepath_or_buffer=filePath)
        data_num = len(data)
        XList = []
        for row in range(0, data_num):
            tmp_list = []
            tmp_list.append(data.iloc[row]['club'])
            tmp_list.append(data.iloc[row]['league'])
            tmp_list.append(data.iloc[row]['potential'])
            tmp_list.append(data.iloc[row]['international_reputation'])
            XList.append(tmp_list)
        return XList
    
    
    def trainandTest(X_train, y_train, X_test):
        # XGBoost训练过程
        model = xgb.XGBRegressor(max_depth=5, learning_rate=0.1, n_estimators=160, silent=False, objective='reg:gamma')
        model.fit(X_train, y_train)
    
        # 对测试集进行预测
        ans = model.predict(X_test)
    
        ans_len = len(ans)
        id_list = np.arange(10441, 17441)
        data_arr = []
        for row in range(0, ans_len):
            data_arr.append([int(id_list[row]), ans[row]])
        np_data = np.array(data_arr)
    
        # 写入文件
        pd_data = pd.DataFrame(np_data, columns=['id', 'y'])
        # print(pd_data)
        pd_data.to_csv('submit.csv', index=None)
    
        # 显示重要特征
        # plot_importance(model)
        # plt.show()
    
    if __name__ == '__main__':
        trainFilePath = 'dataset/soccer/train.csv'
        testFilePath = 'dataset/soccer/test.csv'
        data = loadDataset(trainFilePath)
        X_train, y_train = featureSet(data)
        X_test = loadTestData(testFilePath)
        trainandTest(X_train, y_train, X_test)
    

    然后我就把得到的结果文件submit.csv提交到网站上,看了结果,MAE为106.6977,排名24/28,很不理想。不过这也在预料之中,因为我基本没有进行特征处理。

    我当然不满意啦,一直想着怎么能提高准确率呢?后来就想到了可以利用一下scikit这个库啊!在scikit中包含了一个特征选择的模块sklearn.feature_selection,而在这个模块下面有以下几个方法:

    1. Removing features with low variance(剔除低方差的特征)
    2. Univariate feature selection(单变量特征选择)
    3. Recursive feature elimination(递归功能消除)
    4. Feature selection using SelectFromModel(使用SelectFromModel进行特征选择)

    我首先想到的是利用单变量特征选择的方法选出几个跟预测结果最相关的特征。根据官方文档,有以下几种得分函数来检验变量之间的依赖程度:

    • 对于回归问题: f_regression, mutual_info_regression
    • 对于分类问题: chi2, f_classif, mutual_info_classif

    由于这个比赛是一个回归预测问题,所以我选择了f_regression这个得分函数(刚开始我没有注意,错误使用了分类问题中的得分函数chi2,导致程序一直报错!心很累~)

    f_regression的参数:

    sklearn.feature_selection.f_regression(X, y, center=True)
    X:一个多维数组,大小为(n_samples, n_features),即行数为训练样本的大小,列数为特征的个数
    y:一个一维数组,长度为训练样本的大小
    return:返回值为特征的F值以及p值

    不过在进行这个操作之前,我们还有一个重大的任务要完成,那就是对于空值的处理!幸运的是scikit中也有专门的模块可以处理这个问题:Imputation of missing values

    sklearn.preprocessing.Imputer的参数:
    sklearn.preprocessing.Imputer(missing_values=’NaN’, strategy=’mean’, axis=0, verbose=0, copy=True)

    其中strategy代表对于空值的填充策略(默认为mean,即取所在列的平均数进行填充):

    • strategy=‘median’,代表取所在列的中位数进行填充

    • strategy=‘most_frequent’, 代表取所在列的众数进行填充

    axis默认值为0:

    • axis=0,代表按列进行填充
    • axis=1,代表按行进行填充

    其他具体参数可以参考:sklearn.preprocessing.Imputer

    根据以上,我对数据进行了一些处理:

    from sklearn.feature_selection import f_regression
    from sklearn.preprocessing import Imputer
    
    imputer = Imputer(missing_values='NaN', strategy='mean', axis=0)
    imputer.fit(data.loc[:, 'rw':'lb'])
    x_new = imputer.transform(data.loc[:, 'rw':'lb'])
    data_num = len(x_new)
    XList = []
    yList = []
    for row in range(0, data_num):
        tmp_list = []
        tmp_list.append(x_new[row][0])
        tmp_list.append(x_new[row][1])
        tmp_list.append(x_new[row][2])
        tmp_list.append(x_new[row][3])
        tmp_list.append(x_new[row][4])
        tmp_list.append(x_new[row][5])
        tmp_list.append(x_new[row][6])
        tmp_list.append(x_new[row][7])
        tmp_list.append(x_new[row][8])
        tmp_list.append(x_new[row][9])
        XList.append(tmp_list)
        yList.append(data.iloc[row]['y'])
    
    F = f_regression(XList, yList)
    print(len(F))
    print(F)
    
    

    测试结果:

    2
    (array([2531.07587725, 1166.63303449, 2891.97789543, 2531.07587725,
           2786.75491791, 2891.62686404, 3682.42649607, 1394.46743196,
            531.08672792, 1166.63303449]), array([0.00000000e+000, 1.74675421e-242, 0.00000000e+000, 0.00000000e+000,
           0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.37584507e-286,
           1.15614152e-114, 1.74675421e-242]))
    

    根据以上得到的结果,我选取了rw,st,lw,cf,cam,cm(选取F值相对大的)几个特征加入模型之中。以下是我改进后的代码:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @File  : soccer_value.py
    # @Author: Huangqinjian
    # @Date  : 2018/3/22
    # @Desc  :
    
    import pandas as pd
    import matplotlib.pyplot as plt
    import xgboost as xgb
    import numpy as np
    from xgboost import plot_importance
    from sklearn.preprocessing import Imputer
    
    
    def loadDataset(filePath):
        df = pd.read_csv(filepath_or_buffer=filePath)
        return df
    
    
    def featureSet(data):
        imputer = Imputer(missing_values='NaN', strategy='mean', axis=0)
        imputer.fit(data.loc[:, ['rw', 'st', 'lw', 'cf', 'cam', 'cm']])
        x_new = imputer.transform(data.loc[:, ['rw', 'st', 'lw', 'cf', 'cam', 'cm']])
        data_num = len(data)
        XList = []
        for row in range(0, data_num):
            tmp_list = []
            tmp_list.append(data.iloc[row]['club'])
            tmp_list.append(data.iloc[row]['league'])
            tmp_list.append(data.iloc[row]['potential'])
            tmp_list.append(data.iloc[row]['international_reputation'])
            tmp_list.append(data.iloc[row]['pac'])
            tmp_list.append(data.iloc[row]['sho'])
            tmp_list.append(data.iloc[row]['pas'])
            tmp_list.append(data.iloc[row]['dri'])
            tmp_list.append(data.iloc[row]['def'])
            tmp_list.append(data.iloc[row]['phy'])
            tmp_list.append(data.iloc[row]['skill_moves'])
            tmp_list.append(x_new[row][0])
            tmp_list.append(x_new[row][1])
            tmp_list.append(x_new[row][2])
            tmp_list.append(x_new[row][3])
            tmp_list.append(x_new[row][4])
            tmp_list.append(x_new[row][5])
            XList.append(tmp_list)
        yList = data.y.values
        return XList, yList
    
    
    def loadTestData(filePath):
        data = pd.read_csv(filepath_or_buffer=filePath)
        imputer = Imputer(missing_values='NaN', strategy='mean', axis=0)
        imputer.fit(data.loc[:, ['rw', 'st', 'lw', 'cf', 'cam', 'cm']])
        x_new = imputer.transform(data.loc[:, ['rw', 'st', 'lw', 'cf', 'cam', 'cm']])
        data_num = len(data)
        XList = []
        for row in range(0, data_num):
            tmp_list = []
            tmp_list.append(data.iloc[row]['club'])
            tmp_list.append(data.iloc[row]['league'])
            tmp_list.append(data.iloc[row]['potential'])
            tmp_list.append(data.iloc[row]['international_reputation'])
            tmp_list.append(data.iloc[row]['pac'])
            tmp_list.append(data.iloc[row]['sho'])
            tmp_list.append(data.iloc[row]['pas'])
            tmp_list.append(data.iloc[row]['dri'])
            tmp_list.append(data.iloc[row]['def'])
            tmp_list.append(data.iloc[row]['phy'])
            tmp_list.append(data.iloc[row]['skill_moves'])
            tmp_list.append(x_new[row][0])
            tmp_list.append(x_new[row][1])
            tmp_list.append(x_new[row][2])
            tmp_list.append(x_new[row][3])
            tmp_list.append(x_new[row][4])
            tmp_list.append(x_new[row][5])
            XList.append(tmp_list)
        return XList
    
    
    def trainandTest(X_train, y_train, X_test):
        # XGBoost训练过程
        model = xgb.XGBRegressor(max_depth=5, learning_rate=0.1, n_estimators=160, silent=False, objective='reg:gamma')
        model.fit(X_train, y_train)
    
        # 对测试集进行预测
        ans = model.predict(X_test)
    
        ans_len = len(ans)
        id_list = np.arange(10441, 17441)
        data_arr = []
        for row in range(0, ans_len):
            data_arr.append([int(id_list[row]), ans[row]])
        np_data = np.array(data_arr)
    
        # 写入文件
        pd_data = pd.DataFrame(np_data, columns=['id', 'y'])
        # print(pd_data)
        pd_data.to_csv('submit.csv', index=None)
    
        # 显示重要特征
        # plot_importance(model)
        # plt.show()
    
    if __name__ == '__main__':
        trainFilePath = 'dataset/soccer/train.csv'
        testFilePath = 'dataset/soccer/test.csv'
        data = loadDataset(trainFilePath)
        X_train, y_train = featureSet(data)
        X_test = loadTestData(testFilePath)
        trainandTest(X_train, y_train, X_test)
    
    

    再次提交,这次MAE为 42.1227,排名16/28。虽然提升了不少,不过距离第一名还是有差距,仍需努力。

    接下来,我们来处理一下下面这个字段:

    这里写图片描述
    由于这两个字段是标签,需要进行处理以后(标签标准化)才用到模型中。我们要用到的函数是sklearn.preprocessing.LabelEncoder

        le = preprocessing.LabelEncoder()
        le.fit(['Low', 'Medium', 'High'])
        att_label = le.transform(data.work_rate_att.values)
        # print(att_label)
        def_label = le.transform(data.work_rate_def.values)
        # print(def_label)
    

    当然你也可以使用pandas直接来处理离散型特征变量,具体内容可以参考:pandas使用get_dummies进行one-hot编码。顺带提一句,scikit中也有一个方法可以来处理,可参考:sklearn.preprocessing.OneHotEncoder

    调整后的代码:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @File  : soccer_value.py
    # @Author: Huangqinjian
    # @Date  : 2018/3/22
    # @Desc  :
    
    import pandas as pd
    import matplotlib.pyplot as plt
    import xgboost as xgb
    from sklearn import preprocessing
    import numpy as np
    from xgboost import plot_importance
    from sklearn.preprocessing import Imputer
    from sklearn.cross_validation import train_test_split
    
    
    def featureSet(data):
        imputer = Imputer(missing_values='NaN', strategy='mean', axis=0)
        imputer.fit(data.loc[:, ['rw', 'st', 'lw', 'cf', 'cam', 'cm']])
        x_new = imputer.transform(data.loc[:, ['rw', 'st', 'lw', 'cf', 'cam', 'cm']])
    
        le = preprocessing.LabelEncoder()
        le.fit(['Low', 'Medium', 'High'])
        att_label = le.transform(data.work_rate_att.values)
        # print(att_label)
        def_label = le.transform(data.work_rate_def.values)
        # print(def_label)
    
        data_num = len(data)
        XList = []
        for row in range(0, data_num):
            tmp_list = []
            tmp_list.append(data.iloc[row]['club'])
            tmp_list.append(data.iloc[row]['league'])
            tmp_list.append(data.iloc[row]['potential'])
            tmp_list.append(data.iloc[row]['international_reputation'])
            tmp_list.append(data.iloc[row]['pac'])
            tmp_list.append(data.iloc[row]['sho'])
            tmp_list.append(data.iloc[row]['pas'])
            tmp_list.append(data.iloc[row]['dri'])
            tmp_list.append(data.iloc[row]['def'])
            tmp_list.append(data.iloc[row]['phy'])
            tmp_list.append(data.iloc[row]['skill_moves'])
            tmp_list.append(x_new[row][0])
            tmp_list.append(x_new[row][1])
            tmp_list.append(x_new[row][2])
            tmp_list.append(x_new[row][3])
            tmp_list.append(x_new[row][4])
            tmp_list.append(x_new[row][5])
            tmp_list.append(att_label[row])
            tmp_list.append(def_label[row])
            XList.append(tmp_list)
        yList = data.y.values
        return XList, yList
    
    
    def loadTestData(filePath):
        data = pd.read_csv(filepath_or_buffer=filePath)
        imputer = Imputer(missing_values='NaN', strategy='mean', axis=0)
        imputer.fit(data.loc[:, ['rw', 'st', 'lw', 'cf', 'cam', 'cm']])
        x_new = imputer.transform(data.loc[:, ['rw', 'st', 'lw', 'cf', 'cam', 'cm']])
    
        le = preprocessing.LabelEncoder()
        le.fit(['Low', 'Medium', 'High'])
        att_label = le.transform(data.work_rate_att.values)
        # print(att_label)
        def_label = le.transform(data.work_rate_def.values)
        # print(def_label)
    
        data_num = len(data)
        XList = []
        for row in range(0, data_num):
            tmp_list = []
            tmp_list.append(data.iloc[row]['club'])
            tmp_list.append(data.iloc[row]['league'])
            tmp_list.append(data.iloc[row]['potential'])
            tmp_list.append(data.iloc[row]['international_reputation'])
            tmp_list.append(data.iloc[row]['pac'])
            tmp_list.append(data.iloc[row]['sho'])
            tmp_list.append(data.iloc[row]['pas'])
            tmp_list.append(data.iloc[row]['dri'])
            tmp_list.append(data.iloc[row]['def'])
            tmp_list.append(data.iloc[row]['phy'])
            tmp_list.append(data.iloc[row]['skill_moves'])
            tmp_list.append(x_new[row][0])
            tmp_list.append(x_new[row][1])
            tmp_list.append(x_new[row][2])
            tmp_list.append(x_new[row][3])
            tmp_list.append(x_new[row][4])
            tmp_list.append(x_new[row][5])
            tmp_list.append(att_label[row])
            tmp_list.append(def_label[row])
            XList.append(tmp_list)
        return XList
    
    
    def trainandTest(X_train, y_train, X_test):
        # XGBoost训练过程
        model = xgb.XGBRegressor(max_depth=6, learning_rate=0.05, n_estimators=500, silent=False, objective='reg:gamma')
        model.fit(X_train, y_train)
    
        # 对测试集进行预测
        ans = model.predict(X_test)
    
        ans_len = len(ans)
        id_list = np.arange(10441, 17441)
        data_arr = []
        for row in range(0, ans_len):
            data_arr.append([int(id_list[row]), ans[row]])
        np_data = np.array(data_arr)
    
        # 写入文件
        pd_data = pd.DataFrame(np_data, columns=['id', 'y'])
        # print(pd_data)
        pd_data.to_csv('submit.csv', index=None)
    
        # 显示重要特征
        # plot_importance(model)
        # plt.show()
    
    if __name__ == '__main__':
        trainFilePath = 'dataset/soccer/train.csv'
        testFilePath = 'dataset/soccer/test.csv'
        data = pd.read_csv(trainFilePath)
        X_train, y_train = featureSet(data)
        X_test = loadTestData(testFilePath)
        trainandTest(X_train, y_train, X_test)
    

    这次只提高到了40.8686。暂时想不到提高的方法了,还请大神多多赐教!


    欢迎加入QQ学习交流群(内有干货):
    这里写图片描述

    展开全文
  • 支持向量机用于回归预测的源代码。
  • SVM神经网络的回归预测分析---上证开盘指数预测 供大家学习
  • 回归预测 OR 时间序列预测

    千次阅读 2018-07-27 15:48:01
    区分清楚到底什么选择情况下选择回归预测,什么情况下选择时间序列预测。 回归预测:训练得到的回归模型表示了因变量 (目标)与自变量 ()(预测因子)之间的相关性,即一个或多个自变量对一个因变量的影响程度...

    在选择正确的模型之前,首先应确定变量的关系和影响!!!区分清楚到底什么选择情况下选择回归预测,什么情况下选择时间序列预测。

    回归预测:训练得到的回归模型表示了因变量 y (目标)与自变量 x (x\in \mathbb{R}^{^{^{n}}})(预测因子)之间的相关性,即一个或多个自变量对一个因变量的影响程度,适用于给定新的 x 来预测 y 的情况。

        常用回归模型(因变量 y 是连续值):

                                    线性回归(Linear Regression)

                                    非线性——多项式回归(Polynomial Regression)

                                    正则化——岭回归(Ridge Tegression)、拉索回归(Lasso Regression)、弹性网络回归(ElasticNet Regression) 

                                                        在数据集中的变量之间具有高维度和多重共线性的情况下效果较好。

                                    神经网络(Neural Networks)等。

         注意:在开始模型训练之前需要对数据进行归一化!!!

                     逻辑回归(Logistic Regression)虽然叫回归,但实际是用于“分类”的,预测的是 y 为1或0的概率。


    时间序列预测:训练得到的模型表示了随时间变化的 y 之间的相互依赖性与相关性,适用于预测未来一段时间内 y 的变化情况。

          常用时间序列模型:自回归(AR)模型——(适用于周期性,也适用于周期递增)、移动平均(MA)模型、自回归移动平均模型(ARMA)模型——(分析平稳非白噪声序列)、自回归积分滑动平均(ARIMA)模型——(非平稳时间序列)

                                             Holt-Winter模型(一次指数模型:预测为恒定值;

                                                                            二次指数模型 :预测趋势值;

                                                                            三次指数模型:预测趋势和季节性 )                                  

                                             LSTM模型(适用于单变量和多变量的周期性,不适用于周期递增)等。

    展开全文
  • 基于SVM的回归预测分析,MATLAB直接可以运行
  • 主要介绍了python实现BP神经网络回归预测模型,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 基于BP神经网络的回归预测

    万次阅读 多人点赞 2019-05-18 17:18:50
    最后画出真实结果与使用BP神经网络预测结果的对比图,从图8中我们可以看出,预测的结果与实际的结果是十分相近的,说明该模型具有较好的回归结果。 源码 clear all clc %导入数据 load spectra_data.mat % 随机...
  • tesorflow用于BP神经网络进行回归预测python,可以调节参数,全连接层三个,预测结果print出来,具体数据可造,格式通用即可
  • ML之回归预测:利用13种机器学习算法对Boston(波士顿房价)数据集【13+1,506】进行回归预测(房价预测)+预测新数据得分 导读 本文章基于前边的一篇文章,对13种机器学习的回归模型性能比较以后,然后利用各个模型对...
  • SVM的回归预测分析——上证指数开盘预测的matlab源程序与数据—SVM regression predictive analysis - the Shanghai Composite Index opened prediction matlab source data
  • 我们通过一个案例研究来说明,回归预测是预测运动成绩的最佳方法。 通过从巴西最著名的体育网站之一获得数学家对一级足球晋升的预测,我们表明,当我们期望回归均值时,进行贝叶斯更新会产生误导。 专家未能意识到...
  • 线性回归预测

    万次阅读 2018-07-24 19:58:37
    回归分析预测法中最简单和最常用的是线性回归预测法。 回归分析是对客观事物数量依存关系的分析是数理统计中的一个常用的方法,是处理多个变量之间相互关系的一种数学方法。 在现实世界中,我们常与各种变量打...
  • 基于基于支持向量机libsvm的回归预测分析拟合模型,利用数据做预测,数据代码都在压缩包里。
  • ML之回归预测:利用13种机器学习算法对Boston(波士顿房价)数据集【13+1,506】进行回归预测(房价预测)来比较各模型性能 导读 通过利用13种机器学习算法,分别是LiR、kNN、SVR、DTR、RFR、SGDR、GBR、LGBR、XGBR算法...
  • Keras之ML~P:基于Keras中建立的回归预测的神经网络模型(根据200个数据样本预测新的5+1个样本)——回归预测 目录 输出结果 核心代码 输出结果 核心代码 # -*- coding: utf-8 -*- #Keras...
  • 分别运用普通线性回归、岭回归、lasso回归预测鲍鱼年龄。
  • 回归预测评估指标

    万次阅读 2017-08-26 18:04:16
    回归预测评估指标标注说明ff表示预测值,yy表示实际值评价指标 MAE(Mean Absolute Error) 平均绝对误差 MAE=1n∑i=1n|fi−yi|MAE = \frac{1}{n}\sum_{i=1}^n|f_i-y_i| MSE(Mean Square Error) 平均平方差/均方误差...
  • 在本篇文章中,主要是介绍利用波士顿房价数据来掌握回归预测分析的一些方法。通过本篇文章你可以学习到:1、可视化数据集的重要特征2、估计回归模型的系数3、使用RANSAC拟合高鲁棒性回归模型4、如何来评价回归模型5...
  • 线性回归预测

    2018-04-26 08:22:58
    • 线性回归可以用在预测或分类,多维度(feature)线性问题求解上 • 可以用最小二乘法,梯度下降法求解线性预测函数的系数 • 梯度下降法的核心步骤是:设置系数范围,设定系数梯度,固定其他系数,对某一个系数穷举...
  • ML之回归预测:利用九大类机器学习算法对无人驾驶汽车系统参数(2018年的data,18+2)进行回归预测值VS真实值 相关文章ML之回归预测:利用九大类机器学习算法对无人驾驶汽车系统参数(2018年的data,18+2)进行回归预测值...
  • 数学建模\建模方法\预测模型\回归预测
  • 里面包含很多篇神经网络做回归预测的参考文献,参考价值相当大,喜欢的可以下载参考一下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 186,837
精华内容 74,734
关键字:

回归预测