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

机器学习复习代码

利用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.rhkb.cn/news/184648.html

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

相关文章

【CSP认证考试】202309-1:坐标变换(其一)100分解题思路+代码

解题思路 暴力解决,不考虑时空开销就一直用for循环也可以做出来。按照题目意思输入两个数组,然后将第一个输入的数组的x部分累加起来记作x,再将y部分累加起来记作y。再将第二个数组的x部分都加上x,y部分加上y。最后输出第二个数组…

【分布式事务】初步探索分布式事务的概率和理论,初识分布式事的解决方案 Seata,TC 服务的部署以及微服务集成 Seata

文章目录 一、分布式服务案例1.1 分布式服务 demo1.2 演示分布式事务问题 二、分布式事务的概念和理论2.1 什么是分布式事务2.2 CAP 定理2.3 BASE 理论2.4 分布式事务模型 三、分布式事务解决方案 —— Seata3.1 什么是 Seata3.2 Seata 的架构3.3 Seata 的四种分布式事务解决方…

2023中国视频云市场报告:腾讯云音视频解决方案份额连续六次蝉联榜首,加速全球化布局

近日,国际数据公司(IDC)发布了《中国视频云市场跟踪(2023上半年)》报告,腾讯云音视频的解决方案份额连续六次蝉联榜首,并在视频生产创作与媒资管理市场份额中排名第一。同时,在实时音…

深入理解 Django 模板系统

概要 在任何 Web 开发过程中,渲染和展示数据是不可或缺的一部分。Django 作为一个高效的 Python Web 框架,提供了一个强大且灵活的模板系统。本文将详细介绍 Django 模板系统的核心概念、语法和高级功能。 一、Django 模板系统简介 Django 的模板系统允…

Android修行手册 - 模板匹配函数matchTemplate详解,从N张图片中找到是否包含五星

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&…

Qt OpenGL相机系统

文章目录 一、简介二、实现代码三、实现效果参考资料效果展示 一、简介 一直偷懒没有学习OpenGL,乘着这段有点时间重新学习一下OpenGL,做一个简单的小工具,有助于后面理解OSG。我们都知道OpenGL中存在着下面几个坐标空间:模型空间(物体空间)、世界空间、观察空间(或者称…

五、计算机网络

(一)OSI/RM 七层模型 七层模型是计算机网络的基石,整个计算机网络是构建与七层模型之上的。 在数据链路层,数据开始以帧为单位,网卡的 MAC 地址就是数据帧的地址,数据的传输开始有地址了。 局域网是工作…

JavaWeb Day05 前后端请求响应与分层解耦

目录 一、请求与响应 (一)请求的参数接收 ①数组参数 ②集合参数 ③日期参数 ④json参数 ⑤路径参数 总结 (二)响应 ①简单文本text ②数组 ③列表 ④同一响应数据格式 ⑤总结 二、三层架构与分层解耦 &#xff0…

昇腾CANN 7.0 黑科技:大模型推理部署技术解密

CANN作为最接近昇腾AI系列硬件产品的一层,通过软硬件联合设计,打造出适合昇腾AI处理器的软件架构,充分使能和释放昇腾硬件的澎湃算力。针对大模型推理场景,CANN最新发布的CANN 7.0版本有机整合各内部组件,支持大模型的…

Vue路由介绍及使用

一、单页应用程序介绍 1.概念 单页应用程序:SPA【Single Page Application】是指所有的功能都在一个html页面上实现,当切换不同的功能时,页面不会进行刷新,类似Ajax请求,但请求地址会发生部分变化。 2.具体示例 单…

深度学习环境搭建入门环境搭建(pytorch版本)

从Python安装到深度学习环境搭建 1. Anaconda安装 python可以通过官网下载exe,这里提供的是使用anaconda创建多个虚拟 的python环境,使用Anaconda Prompt管理虚拟环境更方便。 官网地址:Free Download|Anaconda 下载到本地后双击此文…

WPF中数据绑定验证深入讲解

WPF中数据绑定验证深入讲解 WPF在用户输入时,提供了验证功能,通常验证使用以下两种方式来实现: 在数据对象中引发错误。通常是在属性设置过程中抛出异常,或者在数据类中实现INotifyDataErrorInfo或IDataErrorInfo接口。在绑定级…

技术分享 | 测试平台开发-前端开发之数据展示与分析

测试平台的数据展示与分析,我们主要使用开源工具ECharts来进行数据的展示与分析。 ECharts简介与安装 ECharts是一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表&#xff…

Appium —— 初识移动APP自动化测试框架Appium

说到移动APP自动化测试,代表性的测试框架非Appium莫属,从今天开始我们将从APP结构解析、Appium框架学习、安卓/iOS自动化测试实战、自动遍历回归测试、自动化测试平台及持续集成,多个维度一起由浅入深的学废Appium 今天我们先来初步认识Appi…

C++中将数据添加到文件的末尾

参考:https://blog.csdn.net/qq_23880193/article/details/44279283 C中文件的读取需要包含fstream文件,即:#include 文件的读取和写入是是通过流操作来的,这不像输入、输出流那样,库中已经定义了对象cin和cout 文件的读取需要声…

加速度jsudo:小企业会遇到哪些瓶颈期?

什么是瓶颈期?瓶颈期,就是你无论怎么努力,成绩都是上不去,还是停留在原地;而自己表现的还是很匆忙,却不知道如何下手?就像水桶效益一样,水桶的木板高度层次不齐,像极了自…

Spark Core

Spark Core 本文来自 B站 黑马程序员 - Spark教程 :原地址 第一章 RDD详解 1.1 为什么需要RDD 分布式计算需要 分区控制shuffle控制数据存储、序列化、发送数据计算API等一系列功能 这些功能,不能简单的通过Python内置的本地集合对象(如…

在外包干了3年,彻底废了...

前言 先简单说下,我18年的大专生,通过校招去了一家软件公司,在里面干了快3年的功能测试,后面我感觉自己不能够在这样下去了,长时间重复性工作且呆在一个舒适的环境会毁掉一个人,而我已经在一个企业干了3年…

技术分享 | Appium 用例录制

下载及安装 下载地址: github.com/appium/appi… 下载对应系统的 Appium 版本,安装完成之后,点击 “Start Server”,就启动了 Appium Server。 在启动成功页面点击右上角的放大镜,进入到创建 Session 页面。配置好…

PostCSS通过px2rem插件和lib-flexible将px单位转换为rem(root em)单位实现大屏适配

目录 文档postcss中使用postcss-plugin-px2rem安装postcss-plugin-px2rem示例默认配置 webpack中使用postcss-plugin-px2rem项目结构安装依赖文件内容 大屏适配参考文章 文档 类似的插件 postcss-plugin-px2rem https://www.npmjs.com/package/postcss-plugin-px2remhttps://g…