【机器学习】

阅读: 评论:0

【机器学习】

【机器学习】

驭风计划是由清华大学老师教授的,其分为四门课,包括: 机器学习(张敏教授) , 深度学习(胡晓林教授), 计算机语言(刘知远教授) 以及数据结构与算法(邓俊辉教授)。本人是综合成绩第一名,除了数据结构与算法其他单科均为第一名。`代码和报告均为本人自己实现,由于篇幅限制,只展示任务布置以及关键代码,如果需要报告或者代码可以私聊博主



机器学习部分授课老师为张敏教授,主要主要通过介绍决策树,线性回归,贝叶斯模型,SVM算法,K近邻算法,Kmeans算法以及集成学习算法等入门机器学习。

有任何疑问或者问题,也欢迎私信博主,大家可以相互讨论交流哟~~



任务介绍

大学排名是一个非常重要同时也极富挑战性与争议性的问题,一所大学的综合实力涉及科研、师资、学生等方方面面。目前全球有上百家评估机构会评估大学的综合得分进行排序,而这些机构的打分也往往并不一致。在这些评分机构中,世界大学排名中心(Center for World University Rankings,缩写CWUR)以评估教育质量、校友就业、研究成果和引用,而非依赖于调查和大学所提交的数据著称,是非常有影响力的一个。

本任务中我们将根据 CWUR 所提供的世界各地知名大学各方面的排名(师资、科研等),一方面通过数据可视化的方式观察不同大学的特点,另一方面希望构建机器学习模型(线性回归)预测一所大学的综合得分。



作业说明

使用来自 Kaggle 的数据,构建「线性回归」模型,根据大学各项指标的排名预测综合得分。

基本要求:

  • 按照 8:2 随机划分训练集测试集,用 RMSE 作为评价指标,得到测试集上线性回归模型的 RMSE 值;
  • 对线性回归模型的系数进行分析。

扩展要求:

  • 对数据进行观察与可视化,展示数据特点;
  • 尝试其他的回归模型,对比效果;
  • 尝试将离散的地区特征融入线性回归模型,并对结果进行对比。

注意事项:

  • 基本输入特征有 8 个:quality_of_education, alumni_employment, quality_of_faculty, publications, influence, citations, broad_impact, patents
  • 预测目标为 score
  • 可以使用 sklearn 等第三方库,不要求自己实现线性回归;
  • 需要保留所有数据集生成、模型训练测试的代码;


报告

核心代码

自实现的最小二乘法

# B: 利用最小二乘法的实现
def addones(i):"""给X特征添加一列1"""ones = np.ones(i.shape[0]).reshape((i.shape[0],1))return np.hstack((ones,i))
x_train_lse , x_test_lse = addones(x_train) ,addones(x_test) 
## 对于非方针算逆矩阵,利用np.linalg.pinv()
regression = np.dot(np.dot(np.linalg.pinv(np.dot(x_train_lse.T,x_train_lse)),x_train_lse.T),y_train) #标准方程计算
pred_lse   = np.dot(x_test_lse,regression)

自实现的梯度下降法# C:梯度下降法

class Graddesent()def updataTheta(self,data,lr):'''#定义一个batch的梯度下降函数data:[:,:-1] 是x特征 , [:,-1]是ylr:学习率w = w - lr * (gradient_w::2*(y - (wx + b))x)b = b - lr * (gradient_b::2*(y - (wx + b))'''   batchsize = len(data) #样本个树#初始化batah的梯度batch_gradient_b  = 0batch_gradient_w  = 0for sample in data:sample_x = np.array(sample[:-1]) # xsample_y = sample[-1]#print(sample_x.shape, type(sample_y) , self.weight.shape)#计算每个batch里w的梯度均值y = (np.dot(sample_x,self.weight) + self.bias)# #计算每个batch里bw的梯度sample_gradient_b = 2 * (y - sample_y)sample_gradient_w = 2 * np.dot((y - sample_y),shape(1,sample_x.shape[0])) batch_gradient_w += sample_gradient_wbatch_gradient_b += sample_gradient_b# print(batch_gradient_w.shape , batch_gradient_b.shape)# #更新参数值self.weight = self.weight - lr * batch_gradient_w / batchsizeself.bias   = self.bias   - lr * batch_gradient_b / batchsize # #print(self.weight , self.bias )c = Graddesent()
c.fit(x_train, y_train, batchsize = 100, lr = 0.1 , epoch = 1000)
y_predict = c.predict(x_test)
rmse_mbgd = np.sqrt(MSE(y_test,y_predict))
r2_mbgd = r2(y_test, y_predict)
print(f"梯度下降的rmse:{rmse_mbgd:.3f}")
print(f"梯度下降的r2:{r2_mbgd:.3f}")

结果

epoch Vs RMSE

本文发布于:2024-01-29 20:09:43,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170653018717971.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:机器
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23