比賽官網: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()
如有疑問請聯繫我,歡迎騷擾: