机器学习模板代码(期末考试复习)自用存档

机器学习复习代码

利用sklearn实现knn

在这里插入图片描述

import numpy as np
import pandas as pd
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import GridSearchCVdef model_selection(x_train, y_train):## 第一个是网格搜索## p是选择查找方式:1是欧式距离   2是曼哈顿距离params = {'n_neighbors': [3,5,7], 'p': [1,2]}model = KNeighborsClassifier()gs = GridSearchCV(model, params, verbose=2, cv=5)gs.fit(x_train, y_train)print("Best Model:", gs.best_params_, "Accuracy:", gs.best_score_)print(gs.best_estimator_)return gs.best_estimator_def read():filename = r"data/shuixianhua.xlsx"data = pd.read_excel(filename, header=None)## iloc[行,列]x1 = data.iloc[1:, [0, 1]].valuesx2 = data.iloc[1:, [3, 4]].values# print(x2)y1 = data.iloc[1:, 2].valuesy2 = data.iloc[1:, 5].valuesx = np.vstack((x1, x2))  # 竖向合并print("x:")print(x)y = np.hstack((y1, y2))  # 横向合并print("y:")print(y)## 这里是因为我把excel的y理解成string类型了,如果正常读可以不加这个## 将y转为数值的inty = y.astype(int)return x, yif __name__ == '__main__':x, y = read()best_model = model_selection(x, y)

利用sklearn实现线性回归

数据集展示

在这里插入图片描述

import pandas as pd
from sklearn.linear_model import LinearRegression
import numpy as np
def MAE(y,y_pre):return np.mean(np.abs(y-y_pre))
def MSE(y,y_pred):return np.mean((y-y_pred)**2)
def RMSE(y,y_pred):return np.sqrt(MSE(y,y_pred))
def MAPE(y,y_pred):return np.mean(np.abs(y-y_pred)/y)
def R2(y,y_pred):u=np.sum((y-y_pred)**2)v=np.sum((y-np.mean(y_pred))**2)return 1-(u/v)
def judege(name,y,y_pre):mae=MAE(y,y_pre)mse=MSE(y,y_pre)rmse=RMSE(y,y_pre)mape=MAPE(y,y_pre)r2=R2(y,y_pre)print(f"{name}的MAE:{mae},MSE:{mse},RMSE:{rmse}.MAPE:{mape},R2:{r2}")def read():filename = r"../data/ComposePlot.xlsx"data=pd.read_excel(filename,header=None)x1 = data.iloc[2:, [0,]].valuesy1 = data.iloc[2:,1].valuesx2 = data.iloc[2:,[2,]].valuesy2 = data.iloc[2:,3].valuesx3 = data.iloc[2:,[4,]].valuesy3 = data.iloc[2:,5].valuesx4 = data.iloc[2:,[6,]].valuesy4 = data.iloc[2:,7].valuesreturn x1,y1,x2,y2,x3,y3,x4,y4def getModel(x,y):model = LinearRegression()model.fit(x,y)return modeldef main(x1, y1, x2, y2, x3, y3, x4, y4):model1 = getModel(x1,y1)model2 = getModel(x2, y2)model3 =getModel(x3,y3)model4 =getModel(x4,y4)judege("mode1",y1,model1.predict(x1))judege("mode2",y2,model2.predict(x2))judege("mode3",y3,model3.predict(x3))judege("mode4",y4,model4.predict(x4))if __name__ == '__main__':x1, y1, x2, y2, x3, y3, x4, y4 = read()main(x1, y1, x2, y2, x3, y3, x4, y4)

利用sklearn实现逻辑回归

数据集展示

在这里插入图片描述

import pandas as pd
import numpy as np
from sklearn.linear_model import LogisticRegressiondef main(x,y):model=LogisticRegression()model.fit(x,y)print(model.predict(x))
def read():filename = "data/student.xlsx"data=pd.read_excel(filename,header=None)x=data.iloc[1:,[0,1]].valuesy=data.iloc[1:,2].valuesprint(x)print(y)return x,y
if __name__ =='__main__':x,y=read()main(x,y)

利用sklearn实现SVM(向量机)

from sklearn.svm import SVC
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.model_selection import GridSearchCV
import numpy as np
from sklearn.metrics import confusion_matrix, accuracy_score, precision_score, recall_score, \f1_scoredef load_data(): #导入的尾花data = load_iris()x, y = data.data, data.targetx_train, x_test, y_train, y_test = \train_test_split(x, y, test_size=0.3,shuffle=True, random_state=20)return x, y, x_train, x_test, y_train, y_test## 无脑写这个就行
def model_selection(x_train, y_train):model = SVC()paras = {'C': np.arange(1, 10, 5),# rbf:高斯核函数   linear:线性核函数  poly:多项式核函数'kernel': ['rbf', 'linear', 'poly'],'degree': np.arange(1, 10, 2),'gamma': ['scale', 'auto'],'coef0': np.arange(-10, 10, 5)}gs = GridSearchCV(model, paras, cv=3, verbose=2, n_jobs=3)gs.fit(x_train, y_train)print('best score:', gs.best_score_)print('best parameters:', gs.best_params_)return gs.best_params_def train(x_train, x_test, y_train, y_test, C, gamma, kernel):model = SVC(C=C, kernel=kernel, gamma=gamma)model.fit(x_train, y_train)y_pred = model.predict(x_test)# 生成混淆矩阵confusion = confusion_matrix(y_test, y_pred)print("混淆矩阵:\n", confusion)# 生成分类报告,包括准确率、精度、召回率和 F1 得分accuracy = accuracy_score(y_test, y_pred)precision = precision_score(y_test, y_pred, average='weighted')recall = recall_score(y_test, y_pred, average='weighted')f1 = f1_score(y_test, y_pred, average='weighted')print("准确率Accuracy:", accuracy)print("精度Precision:", precision)print("召回率Recall:", recall)print("FScore:", f1)if __name__ == '__main__':X, Y, x_train, x_test, y_train, y_test = load_data()best_params = model_selection(x_train, y_train)## 这步骤也是无脑写就行train(x_train, x_test, y_train, y_test, best_params["C"], best_params["gamma"], best_params["kernel"])

小知识点扩展

将数据分成训练集和测试集

   x_train, x_test, y_train, y_test = \train_test_split(x, y, test_size=0.3,shuffle=True, random_state=20)

来自chargpt的解释

是的,这段代码用于将数据集分成训练集和测试集。具体地说,它使用train_test_split函数将输入的特征数据x和标签数据y分成四个部分:x_train(训练集的特征数据)、x_test(测试集的特征数据)、y_train(训练集的标签数据)和y_test(测试集的标签数据)。

以下是这段代码的主要参数和作用:

  • x是特征数据。
  • y是标签数据。
  • test_size=0.3指定了测试集的比例,这里是总数据的30%将被用作测试集。
  • shuffle=True表示在分割数据之前对数据进行洗牌,以确保数据的随机性。
  • random_state=20是一个随机种子,用于确保每次运行代码时分割数据的结果都相同,这有助于复现实验结果。

综上所诉,只要背就好了,还有参数的意思

归一化

def hypo(x,w,b):z=np.matmul(x,w)+bh_x=1/(1+np.exp(-z))h_x=(h_x>=0.5)*1return h_x

书上p49,我也不太懂归一化的用法,其中z=wx+b

从0实现线性回归

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt# 添加归一化函数
def normalize_data(data):min_val = np.min(data)max_val = np.max(data)normalized_data = (data - min_val) / (max_val - min_val)return normalized_datadef prediction(X, W, bias):return np.matmul(X, W) + biasdef cost_function(X, y, W, bias):m, n = X.shapey_hat = prediction(X, W, bias)return 0.5 * (1 / m) * np.sum((y - y_hat) ** 2)def gradient_descent(X, y, W, bias, alpha):m, n = X.shapey_hat = prediction(X, W, bias)grad_w = -(1 / m) * np.matmul(X.T, (y - y_hat))grad_b = -(1 / m) * np.sum(y - y_hat)W = W - alpha * grad_wbias = bias - alpha * grad_breturn W, biasdef train(X, y, ite=200):m, n = X.shapeW, b, alpha, costs = np.random.randn(n, 1), 0.1, 0.2, []for i in range(ite):costs.append(cost_function(X, y, W, b))W, b = gradient_descent(X, y, W, b, alpha)return costsdef read():filename = r"../../data/easy_test.xlsx"data = pd.read_excel(filename, header=None)x = data.iloc[2:, [0, ]].valuesy = data.iloc[2:, 1].values# 对特征数据 x 进行归一化x_normalized = normalize_data(x)return x_normalized, yif __name__ == '__main__':x, y = read()costs = train(x, y)# print(costs)# 绘制损失曲线plt.figure()plt.plot(range(len(costs)), costs, marker='o', linestyle='-', color='b', label='Training Loss')plt.xlabel('Iteration')plt.ylabel('Cost')plt.title('Training Loss')plt.legend()plt.grid(True)plt.show()

从0实现逻辑回归

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/139233.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CS224W5.3——信念传播

此文中,我们介绍信念传播,这是一种回答图中概率查询的动态规划方法。通过迭代传递消息给邻居节点,如果达成共识,则计算最终的信念值。然后,我们通过示例和泛化树结构展示消息传递。最后讨论了循环信念传播算法及其优缺…

ROS话题(Topic)通信:通信模型、Hello World与拓展

文章目录 一、话题通讯模型二、Topic Hello World2.1 创建并初始化功能包2.2 确定Topic名称及消息格式2.3 实现发布者与订阅者(C版)2.4 实现发布者与订阅者(Python版)2.5 关于Topic Hello World的注意 拓展1:devel下其…

计算机网络——物理层-传输方式(串行传输、并行传输,同步传输、异步传输,单工、半双工和全双工通信)

目录 串行传输和并行传输 同步传输和异步传输 单工、半双工和全双工通信 串行传输和并行传输 串行传输是指数据是一个比特一个比特依次发送的。因此在发送端和接收端之间,只需要一条数据传输线路即可。 并行传输是指一次发送n个比特,而不是一个比特&…

11.7加减计数器,可置位~,数字钟分秒,串转并,串累加转并,24位串并128,流水乘法器,一些乘法器

信号发生器 方波,就是一段时间内都输出相同的信号 锯齿波就是递增 三角波就是先增后减 加减计数器 当mode为1则加,Mode为0则减;只要为0就输出zero 这样会出问题,因为要求是十进制,但是这里并没有考虑到9之后怎么办&a…

测试用例的设计方法(黑盒)

1.基于需求的设计方法 比如针对网易邮箱进行测试:分为功能相关和非功能相关两大类 但是这么设计的话,有无数多个测试用例,我们现在看到的只是一些大概的测试用例,要想设计具体的测试用例,需要用到下面测试用例的方法…

password game

目录 password game (1-2) (3) (4) (5) (6) (7) (8) (9) (10&am…

css3文字环绕旋转

目录 固定数量文字环绕旋转不固定数量文字环绕旋转效果图 固定数量文字环绕旋转 <!-- 文字旋转测试 --> <template><div class"page"><div><div v-for"(item, index) in [...Array(20).keys()]" :key"index" style&…

desc相关注入

desc相关注入 补充

HBuilderX vue项目打包上传到服务器

完成后有个’dist’目录,把真个目录通过FTP 上传到服务器,Mac电脑使用cyberduck 上传 服务器使用‘宝塔’进行一件部署,基本上就是傻瓜式的点击下一步

建行广东江门分行:科技赋能,数据助力纠“四风”

为进一步深化落实中央八项规定精神&#xff0c;持续加大“四风”问题查处力度&#xff0c;建行驻江门市分行纪检组根据《广东省分行贯彻落实中央八项规定精神持之以恒纠治“四风”实施方案》&#xff08;建粤党发〔2023〕1号&#xff09;安排&#xff0c;对驻在市分行开展“四风…

Vue项目中强制刷新页面的方法

我们在动态切换组件的过程中&#xff0c;导航栏和底栏不动&#xff0c;动态切换中间区域的情况&#xff0c;在首页可以进行跳转任意组件&#xff0c;在组件与组件之间不能相互跳转&#xff0c;路由发生了变化&#xff0c;但是页面未改变&#xff0c;这时我们就需要强制刷新页面…

如何用sklearn对随机森林调参

文章目录 一、概述二、实操1、导入相关包2、导入乳腺癌数据集&#xff0c;建立模型3、调参 三、总结 Link&#xff1a;https://zhuanlan.zhihu.com/p/126288078 Author&#xff1a;陈罐头 一、概述 sklearn是目前python中十分流行的用来实现机器学习的第三方包&#xff0c;其中…

凯美瑞 vs 太空船:Web3 游戏生长的两条路径

撰文&#xff1a;Teng Yan&#xff08;0xPrismatic&#xff09;&#xff0c;Delphi Digital 研究员 编译&#xff1a;TinTinLand 来源&#xff1a;https://0xprismatic.substack.com/p/my-short-web3-gaming-thesis 经常有人问我关于 Web3 游戏的看法&#xff0c;所以我想以这…

什么是数据库事务、事务的ACID、怎么设置/禁止自动提交?

数据库事务及ACID 数据库事务是指作为单个逻辑工作单元执行的一组操作。这组操作要么全部成功地执行&#xff0c;要么全部不执行&#xff0c;不允许出现部分执行的情况。数据库事务通常需要满足ACID属性&#xff0c;即原子性&#xff08;Atomicity&#xff09;、一致性&#x…

某城高速综合管控大数据大屏可视化【可视化项目案例-04】

🎉🎊🎉 你的技术旅程将在这里启航! 🚀🚀 本文选自专栏:可视化技术专栏100例 可视化技术专栏100例,包括但不限于大屏可视化、图表可视化等等。订阅专栏用户在文章底部可下载对应案例源码以供大家深入的学习研究。 🎓 每一个案例都会提供完整代码和详细的讲解,不…

Python开源项目PGDiff——人脸重建(Face Restoration),模糊清晰、划痕修复及黑白上色的实践

python ansconda 等的下载、安装等请参阅&#xff1a; Python开源项目CodeFormer——人脸重建&#xff08;Face Restoration&#xff09;&#xff0c;模糊清晰、划痕修复及黑白上色的实践https://blog.csdn.net/beijinghorn/article/details/134334021 友情提示&#xff1a; …

CSS3 过度效果、动画、多列

一、CSS3过度&#xff1a; CSS3过渡是元素从一种样式逐渐改变为另一种的效果。要实现这一点&#xff0c;必须规定两相内容&#xff1a;指定要添加效果的CSS属性&#xff1b;指定效果的持续时间。如果为指定持续时间&#xff0c;transition将没有任何效果。 <style> div…

Clickhouse 学习笔记(6)—— ClickHouse 分片集群

前置知识&#xff1a; Clickhouse学习笔记&#xff08;5&#xff09;—— ClickHouse 副本-CSDN博客 与副本对比&#xff1a; 副本虽然能够提高数据的可用性&#xff0c;降低丢失风险&#xff0c;但是每台服务器实际上必须容纳全量数据&#xff0c;对数据的横向扩容没有解决 …

基于工业智能网关的汽车充电桩安全监测方案

近年来&#xff0c;我国新能源汽车产业得到快速发展&#xff0c;电动车产量和销量都在持续增长&#xff0c;不仅国内市场竞争激烈&#xff0c;而且也远销海外&#xff0c;成为新的经济增长点。但与此同时&#xff0c;充电设施的运营却面临着安全和效率的双重挑战。 当前的充电桩…

Linux开发工具之编辑器vim

文章目录 1.vim是啥?1.1问问度娘1.2自己总结 2.vim的初步了解2.1进入和退出2.2vim的模式1.介绍2.使用 3.vim的配置3.1自己配置3.2下载插件3.3安装大佬配置好的文件 4.程序的翻译 1.vim是啥? 1.1问问度娘 1.2自己总结 vi/vim都是多模式编辑器&#xff0c;vim是vi的升级版本&a…