我目前正在从事梯度下降项目
我选择nba统计数据作为我的数据,所以我从basketball reference下载了3Pts数据和pts数据,并成功绘制了散点图。然而,结果似乎并不正确
我的散点图正朝着右上(因为3分越多通常意味着得分越多,所以这是有意义的)
但我的梯度下降线是向左上的,我不知道怎么了
import pandas as pd
import numpy as np
from sklearn import linear_model
from matplotlib import pyplot as plt
data = pd.read_csv('C:/Users/jeehw/Documents/FG3M_PTS_2021.csv')
X = data.iloc[:,1]
Y = data.iloc[:,2]
plt.figure(figsize=(8,6))
plt.xlabel('FG3M')
plt.ylabel('PTS')
plt.scatter(X,Y)
plt.show()
m = 0
c = 0
L = 0.001
epochs = 200
n = float(len(X))
for i in range(len(X)):
Y_pred = m*X + c
m_Grad = (1/n) * sum(X * (Y_pred - Y))
c_Grad = (1/n) * sum(Y_pred - Y)
m = m - L* m_Grad
c = c - L* c_Grad
Y_pred = m*X + c
plt.scatter(X, Y)
plt.scatter(X, Y_pred)
plt.show()
这段代码中的一些东西没有真正意义。你想从头开始做回归吗?因为你确实需要学习,但从不应用它。关于如何使用scikit学习回归here,您可以参考此链接。我也会考虑和其他算法一起玩。
我相信这就是你在这里要做的:
那里有一些噪音。你有很多球员得分很多,他们从来没有投过三分球,更不用说一分了。所以我会考虑先做大量的数据清理工作。(可能只考虑至少尝试过50次3分的球员?或者去掉中锋?如果球员换了球队,他们可能会在数据集中出现几次,每个球队的总数都是这样的,所以有一些冗余…但我不会花时间去清理,因为这超出了问题的范围)。我也会测试其他机器学习算法。但是上面的代码至少会让你去玩。玩得开心
相关问题 更多 >
编程相关推荐