微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

【随机梯度下降】理解与使用

import numpy as np
 pandas as pd
 matplotlib.pyplot as plt
%matplotlib inline

from sklearn.linear_model import LinearRegression
data = pd.read_csv('./training data.txt')
data.head(5) 

# 数据映射
for col in data.columns[0:1]:   遍历所有类名
#     print(col) 
    u = data[col].unique()    得出每个分类下面的种类名称

    def convert(x):   将上面得出的u 进行索引映射

        return np.argwhere(u == x)[0,0]    将上面得出的u 进行索引映射
    
    data[col] = data[col].map(convert)   将上面得出的u 进行索引映射
data.head(5)

 数据分类   data.iloc[[行],[列]
X = data.iloc[:,[1,2]]
X.head()
print(type(X))
X.head()

 数据分类
y = data[Gender]
(type(y))
y.head()

 切分训练集跟测试集
from sklearn.model_selection  train_test_split

X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.2)   切分
print("训练集大小",X_train.shape,y_train.shape)
测试集大小",X_test.shape,y_test.shape)

 2: 梯度下降
 LinearRegression
from pylab  mpl
mpl.rcParams[font.sans-serif'] = [FangSong']  指定认字体
mpl.rcParams[axes.unicode_minus'] = False  解决保存图像是负号'-'显示为方块的问题

随机梯度下降 要先对数据进行归一化处理 SGDRegressor from sklearn.preprocessing 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)

 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预测值跟训练之的对比值
随机梯度下降预测准确率为: 预测值
y_test_std

 梯度下降预测集图
y_data = np.array(y_test_std)
x_data = np.arange(1,len(y_test)+1)

z=np.arange(1,1)">)
m=np.array([0.5]*len(y_test))
plt.plot(z,m,label=分割线red)

plt.xlabel(人数)
plt.ylabel(预测性别)
plt.title(大于0.5的是男性,小于0.5的是女性)


plt.scatter(x_data,y_data)

 


 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐