Python-线性回归模型预测绝地求生玩家排名

比赛官网:Kaggle绝地求生数据集

比赛描述:在PUBG游戏(绝地求生)中,每场比赛最多有100名玩家,玩家可以在团队上根据有多少其他团队在被淘汰时还活着而在游戏结束时排名。在游戏中,玩家可以获得不同的弹药,恢复被击倒但未被击杀的队友,驾驶车辆,游泳,跑步,射击等等。

官网给的数据集包含大量匿名的PUBG游戏统计数据,数据格式为每行包含一个玩家的赛后统计数据。数据来自所有类型的比赛:单排,双排,小队和自定义(不保证每场比赛有100名玩家,每个小组最多4名玩家)。

比赛要求必须创建一个模型,根据他们的最终统计数据预测玩家的比赛排名,从1(第一名)到0(最后一名)。

工具:Python3

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn import metrics
from sklearn.model_selection import cross_val_predict
import matplotlib.pyplot as plt

filePath01 = r'F://temp_data/train_V2.csv'
data01 = pd.read_csv(filePath01)
data01.head()  # 读取前五行数据,如果是最后五行,用data.tail()
print(data01.shape)  # 看数据的维度
X = data01.drop(['rank'], axis=1)
y = data01[:, ['rank']]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=2333)

linreg = LinearRegression()
linreg.fit(X_train, y_train)
# 查看需要的模型系数结果
print(linreg.intercept_)
print(linreg.coef_)

# 模型拟合测试集
y_pred = linreg.predict(X_test)

# 用scikit-learn计算均方差MSE
print("MSE:", metrics.mean_squared_error(y_test, y_pred))
# 用scikit-learn计算均方根差RMSE
print("RMSE:", np.sqrt(metrics.mean_squared_error(y_test, y_pred)))
# 得到了MSE或者RMSE,如果我们用其他方法得到了不同的系数,需要选择模型时,就用MSE较小时对应的参数。

# 通过交叉验证来持续优化模型,这里采用10折交叉验证,即cv=10
predicted = cross_val_predict(linreg, X, y, cv=10)
# 用scikit-learn计算MSE
print("MSE:", metrics.mean_squared_error(y, predicted))
# 用scikit-learn计算RMSE
print("RMSE:", np.sqrt(metrics.mean_squared_error(y, predicted)))

# 画图观察结果  真实值和预测值的变化关系
fig, ax = plt.subplots()
ax.scatter(y, predicted)
ax.plot([y.min(), y.max()], [y.min(), y.max()], 'k--', lw=4)
ax.set_xlabel('Measured')
ax.set_ylabel('Predicted')
plt.show()


如有疑问请联系我,欢迎骚扰:

                                                             

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章