# 2: 梯度下降
from sklearn.linear\_model import LinearRegression
from pylab import mpl
mpl.rcParams\['font.sans-serif'\] = \['FangSong'\] # 指定默认字体
mpl.rcParams\['axes.unicode\_minus'\] = False # 解决保存图像是负号'-'显示为方块的问题
# 随机梯度下降 要先对数据进行归一化处理
from sklearn.linear\_model import SGDRegressor
from sklearn.preprocessing import StandardScaler
# 归一化数据
std = StandardScaler()
std.fit(X\_train) # 计算训练集X数据
X\_train\_std \= std.transform(X\_train) # 得出归一化训练集X上的归一化值
X\_test\_std = std.transform(X\_test) # 得出归一化测试集X上的归一化值
print(X\_train\_std,X\_test\_std)
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
# n\_iter代表浏览多少次,默认是5
sgd\_reg = SGDRegressor(n\_iter=100) # 梯度下降对象实例
sgd\_reg.fit(X\_train\_std, y\_train) # 归一化值X训练集 与 y训练集 进行计算训练
res \= sgd\_reg.score(X\_test\_std, y\_test) # 比较y预测值跟训练之的对比值
print("随机梯度下降预测准确率为:",res)
y\_test\_std \= sgd\_reg.predict(X\_test\_std) # 预测值
y\_test\_std
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
# 梯度下降预测集图
y\_data = np.array(y\_test\_std)
x\_data \= np.arange(1,len(y\_test)+1)
z\=np.arange(1,len(y\_test)+1)
m\=np.array(\[0.5\]\*len(y\_test))
plt.plot(z,m,label\="分割线",color='red')
plt.xlabel("人数")
plt.ylabel("预测性别")
plt.title("大于0.5的是男性,小于0.5的是女性")
plt.scatter(x\_data,y\_data)
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.