驭风计划是由清华大学老师教授的,其分为四门课,包括: 机器学习(张敏教授) , 深度学习(胡晓林教授), 计算机语言(刘知远教授) 以及数据结构与算法(邓俊辉教授)。本人是综合成绩第一名,除了数据结构与算法其他单科均为第一名。`代码和报告均为本人自己实现,由于篇幅限制,只展示任务布置以及关键代码,如果需要报告或者代码可以私聊博主
机器学习部分授课老师为张敏教授,主要主要通过介绍决策树,线性回归,贝叶斯模型,SVM算法,K近邻算法,Kmeans算法以及集成学习算法等入门机器学习。
有任何疑问或者问题,也欢迎私信博主,大家可以相互讨论交流哟~~
大学排名是一个非常重要同时也极富挑战性与争议性的问题,一所大学的综合实力涉及科研、师资、学生等方方面面。目前全球有上百家评估机构会评估大学的综合得分进行排序,而这些机构的打分也往往并不一致。在这些评分机构中,世界大学排名中心(Center for World University Rankings,缩写CWUR)以评估教育质量、校友就业、研究成果和引用,而非依赖于调查和大学所提交的数据著称,是非常有影响力的一个。
本任务中我们将根据 CWUR 所提供的世界各地知名大学各方面的排名(师资、科研等),一方面通过数据可视化的方式观察不同大学的特点,另一方面希望构建机器学习模型(线性回归)预测一所大学的综合得分。
使用来自 Kaggle 的数据,构建「线性回归」模型,根据大学各项指标的排名预测综合得分。
基本要求:
扩展要求:
注意事项:
quality_of_education
, alumni_employment
, quality_of_faculty
, publications
, influence
, citations
, broad_impact
, patents
;score
;自实现的最小二乘法
# 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 条评论) |