【Python】数据挖掘与机器学习(一)

【Python】数据挖掘与机器学习(一)

大家好 我是寸铁👊
总结了一篇【Python】数据挖掘与机器学习(一)sparkles:
喜欢的小伙伴可以点点关注 💝


【实验1】预测鲍鱼年龄

问题描述

请从一份数据中预测鲍鱼的年龄,数据集在abalone.cvs中,数据集一共有4177 个样本,每个样本有9个特征。其中rings为鲍鱼环数,鲍鱼每一年长一环,类似树轮,是预测
变量,sex属性已经经过处理,M=1表示雄性、F=-1表示雌性、I=0表示幼体。 有9列数据,分别是:

在这里插入图片描述

在这里插入图片描述


要求

(1)给出回归模型,给出线性回归模型的回归系数,以及
(2)需要分训练数据与测试数据,采用训练数据学习,给出R2,采用测试数据计算MSE.


代码

import sklearn
import tensorflow as tf
import numpy as np
import pandas
import sklearn.model_selection as ms
import matplotlib.pyplot as pltdef main():df = pandas.read_csv('abalone.csv')df = df.valuesy = df[:, [-1]].astype('float32')  # 提取第9 列x = df[:, 1:8].astype('float32')  # 提取1-8 列sex = df[:, 0].astype('float32')  # 取出第0 列,后续要转换成2 个哑元male = sex == 1female = sex == -1oneMa = np.zeros((len(sex), 1), dtype='float32')  # 雄性oneFe = np.zeros((len(sex), 1), dtype='float32')  # 雌性oneMa[male] = 1oneFe[female] = 1ones = np.ones((len(x), 1), dtype='float32')  # 全是 1 的向量x = np.hstack((ones, oneMa, oneFe, x))  # 凑成一个 X 大矩阵print(x.shape)rows, cols = x.shapeweight = tf.Variable(tf.random.normal([cols, 1]), name='weight')# 生成一个 包含 bias 的 weight,对应 x 的列数def loss_fn(X, y):y_ = tf.matmul(X, weight)assert (y.shape == y_.shape)  # 确认维数一致,这一步很容易出错return tf.reduce_mean(tf.square(y_ - y)) / 2x_train, x_test, y_train, y_test = ms.train_test_split(x, y, test_size=0.3, random_state=32)print(x_train.shape)print(x_test.shape)print(y_train.shape)print(y_test.shape)print(weight)yy_ = tf.matmul(x_train, weight)err = sklearn.metrics.mean_squared_error(y_train, yy_)print(f'训练集 MSE: {err}')y_ = tf.matmul(x_test, weight)err = sklearn.metrics.mean_squared_error(y_test, y_)print(f'测试集 MSE: {err}')  # 测试集的 MSER2 = sklearn.metrics.r2_score(y_train, yy_)print(f'R2 = {R2}')plt.show()

【实验2】成年男性的听力实验

数据集hearing_test.csv 是对 5000 名参与者进行了一项实验,以研究年龄和身体健康对听力损失的影响,尤其是听高音的能力。此数据显示了研究结果对参与者进行了身体能力的评估和评分,然后必须进行音频测试(通过/不通过),以评估他们听到高频的能力。
特征:1.年龄age;2. 健康得分physical_score
标签:1通过/0不通过


要求

(1)采用以下方法读取数据,并给出可视化的显示效果

import seaborn as sns        
import pandas as pd 
(绘图包, pip install seaborn) 
import matplotlib.pyplot as plt 
df = pd.read_csv('hearing_test.csv') 
sns.scatterplot(x='age',y='physical_score',data=df,hue='test_result') 
sns.pairplot(df,hue='test_result') 
plt.show()              
由于show默认是阻塞,看完图后,要把它放在代码最后面 

(2)采用以下方法得到数据

df = df.values 
x = df[:, [0, 1]]      
头两列对应age与physical_score - 3 - 
y = df[:, 2]            第三列对应是否通过 

(3)把数据拆分为训练集与测试集,最后采用测试数据来验证模型

from sklearn.model_selection import train_test_split 
x_train, x_test, y_train, y_test = train_test_split(x, y,  test_size=0.4, random_state=2022) 

(4)给出Logistic回归分类方法,给出二分类模型的权重,给出测试数据的散点图;
(5)模型性能评估:给出训练集与测试集的准确率 Accuracy、精确度 Precision 和召
回率Recall、F1score。
(6)选做:给出两类数据的分割直线。


代码

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from tensorflow.python.ops.confusion_matrix import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.metrics import precision_score
from sklearn.metrics import recall_score
from sklearn.metrics import f1_scoredf = pd.read_csv('hearing_test.csv')
testA = df[df["test_result"] == 0].values
testB = df[df["test_result"] == 1].values
sns.scatterplot(x='age', y='physical_score', data=df, hue='test_result')
sns.pairplot(df, hue='test_result')
df = df.values
x = df[:, [0, 1]]  # 头两列对应 age 与 physical_score
y = df[:, 2]  # 第三列对应是否通过
x_train, x_test, y_train, y_test = train_test_split(x, y,test_size=0.4, random_state=2022)
model = LogisticRegression(fit_intercept=True).fit(x_train, y_train)
weight = model.coef_
bias = model.intercept_
print('权重:', weight, bias)
print('训练集准确率:', model.score(x_train, y_train))
print('测试集准确率:', model.score(x_test, y_test))
y_pred = model.predict(x_test)
print('混淆矩阵:\n', confusion_matrix(y_test, y_pred))print('accuracy:', accuracy_score(y_test, y_pred))
print('precision:', precision_score(y_test, y_pred))
print('recall:', recall_score(y_test, y_pred))
print('f1 score:', f1_score(y_test, y_pred))
x1_boundary, x2_boundary = [], []plt.figure()
plt.scatter(x1_boundary, x2_boundary, c='b', s=10)
plt.scatter(testA[:, 0], testA[:, 1], c='r', s=1)
plt.scatter(testB[:, 0], testB[:, 1], c='g', s=1)
plt.show()

看到这里的小伙伴,恭喜你又掌握了一个技能👊
希望大家能取得胜利,坚持就是胜利💪
我是寸铁!我们下期再见💕

往期好文💕

保姆级教程

【保姆级教程】Windows11下go-zero的etcd安装与初步使用

【保姆级教程】Windows11安装go-zero代码生成工具goctl、protoc、go-zero

【Go-Zero】手把手带你在goland中创建api文件并设置高亮


报错解决

【Go-Zero】Error: user.api 27:9 syntax error: expected ‘:‘ | ‘IDENT‘ | ‘INT‘, got ‘(‘ 报错解决方案及api路由注意事项

【Go-Zero】Error: only one service expected goctl一键转换生成rpc服务错误解决方案

【Go-Zero】【error】 failed to initialize database, got error Error 1045 (28000):报错解决方案

【Go-Zero】Error 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)报错解决方案

【Go-Zero】type mismatch for field “Auth.AccessSecret“, expect “string“, actual “number“报错解决方案

【Go-Zero】Error: user.api 30:2 syntax error: expected ‘)‘ | ‘KEY‘, got ‘IDENT‘报错解决方案

【Go-Zero】Windows启动rpc服务报错panic:context deadline exceeded解决方案


Go面试向

【Go面试向】defer与time.sleep初探

【Go面试向】defer与return的执行顺序初探

【Go面试向】Go程序的执行顺序

【Go面试向】rune和byte类型的认识与使用

【Go面试向】实现map稳定的有序遍历的方式

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

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

相关文章

【Qt】:常用控件(二:QWidget核心属性)

常用控件(二) 一.cursor(光标形状)二.font(字体信息)三.toolTip(提示显示)四.focusPolicy(焦点)五.styleSheet(文本样式) 一.cursor&a…

Java BigDecimal类

原因 为什么要有BigDecimal类因为二进制的缘故&#xff0c;直接对浮点数进行运算&#xff0c;会导致精度丢失的问题下例&#xff1a;出现了0.1 0.2 <> 0.3 常见的API 这些API中&#xff0c;并不推荐由double类型转换的BigDecimal,因为底层还是double推荐使用由string 类…

QT5-qmediaplayer播放视频及进度条控制实例

qmediaplayer是QT5的播放视频的一个模块。它在很多时候还是要基于第三方的解码器。这里以Ubuntu系统为例&#xff0c;记录其用法及进度条qslider的控制。 首先&#xff0c;制作一个简单的界面文件mainwindow.ui&#xff1a; 然后&#xff0c;下载一个mp4或其他格式视频&#x…

【算法集训】基础算法:二分查找 | 概念篇

二分枚举&#xff0c;也叫二分查找&#xff0c;指的就是给定一个区间&#xff0c;每次选择区间的中点&#xff0c;并且判断区间中点是否满足某个条件&#xff0c;从而选择左区间继续求解还是右区间继续求解&#xff0c;直到区间长度不能再切分为止。 由于每次都是把区间折半&am…

小程序实现订阅功能和测试发送订阅信息

现在一次性订阅是只能用户点一次才能发送一次&#xff0c;而针对长期模板只有规定的几种类目政务、民生、交通等等的才可以&#xff0c;所以说感觉这功能其实已经不是很适合使用了&#xff0c;只适合一些特别的场景才可以使用。 地址&#xff1a;https://developers.weixin.qq…

where 函数

Pandas 中的 where 函数 在 Pandas 中&#xff0c;where 函数用于替换不满足条件的值。具体来说&#xff0c;它返回一个与原始 DataFrame 或 Series 形状相同的新对象&#xff0c;但所有不满足条件的值都被替换为指定的值&#xff08;默认为 NaN&#xff09;。 对于 DataFram…

【Web应用技术基础】JavaScript(7)——案例:点击文字则放大字体

视频已发。截图如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</titl…

2024.4.6-day11-CSS 背景和精灵图

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 作业2024.4.6学习笔记1 背景2 背景图片3 CSS 精灵图 作业 <!DOCTYPE html&…

项目中 使用 spring cache redis 出现大量keys* 慢查询排查以及修复

前言 业务反馈 redis里有大量的慢查询 而且全是keys 的命令 排查 首先登录 阿里云查看redis的慢查询日志 如下 主要使用到redis cache的注解功能 分别是 CacheEvict 和 Cacheable 注意 CacheEvict 这个比较特殊 会进行驱逐缓存 说白就会删除缓存或者让缓存失效 第一时间想…

第十四届蓝桥杯省赛大学C组(C/C++)填充

原题链接&#xff1a;填充 有一个长度为 n 的 01 串&#xff0c;其中有一些位置标记为 ?&#xff0c;这些位置上可以任意填充 0 或者 1&#xff0c;请问如何填充这些位置使得这个 01 串中出现互不重叠的 0 和 1 子串最多&#xff0c;输出子串个数。 输入格式 输入一行包含一…

【保姆级教程】如何在 Windows 上实现和 Linux 子系统的端口映射

写在前面 上次分享【保姆级教程】Windows上安装Linux子系统&#xff0c;搞台虚拟机玩玩&#xff0c;向大家介绍了什么是虚拟机以及如何在Windows上安装Linux虚拟机。对于开发同学而言&#xff0c;经常遇到的一个问题是&#xff1a;很多情况下代码开发需要依赖 Linux 系统&…

多线程代码设计模式之单例模式

目录 设计模式引入 饿汉模式 懒汉模式 单例模式总结 设计模式引入 1.1.什么是设计模式 &#xff08;1&#xff09;设计模式就是一种代码的套用模板。例如&#xff1a;一类题型的步骤分别有哪些&#xff0c;是可以直接套用的。 &#xff08;2&#xff09;像棋谱&#xff…

代码随想录算法训练营DAY17|C++二叉树Part.4|110.平衡二叉树、257.二叉树的所有路径、404.左叶子之和

文章目录 110.平衡二叉树思路伪代码CPP代码 257.二叉树的所有路径思路伪代码实现CPP代码 404.左叶子之和思路伪代码CPP代码 110.平衡二叉树 力扣题目链接 文章讲解&#xff1a;110.平衡二叉树 视频讲解&#xff1a;后序遍历求高度&#xff0c;高度判断是否平衡 | LeetCode&…

lua学习笔记6(经典问题输出99乘法表)

print("************for循环的99乘法表*************") for i 1, 9 dolocal line "" -- 创建一个局部变量来累积每行的输出--local 是一个关键字&#xff0c;用于声明一个局部变量。for j 1, i doline line .. j .. "*" .. i .. ""…

电脑桌面上表格不见了怎么找回?这5个方法不要错过

在日常的办公和学习中&#xff0c;电脑桌面上的各种文件、文件夹和表格等无疑是我们较为频繁使用的资源。然而&#xff0c;有时我们可能会因为一些操作失误或者电脑问题&#xff0c;突然发现桌面上的某个表格文件神秘失踪了。面对这种情况&#xff0c;很多人可能会感到焦虑和不…

[WIP]Sora相关工作汇总VQGAN、MAGVIT、VideoPoet

视觉任务相对语言任务种类较多(detection, grounding, etc.)、粒度不同 (object-level, patch-level, pixel-level, etc.)&#xff0c;且部分任务差异较大&#xff0c;利用Tokenizer核心则为如何把其他模态映射到language space&#xff0c;并能让语言模型更好理解不同的视觉任…

Python-VBA函数基础知识-001

一、函数的定义&#xff1a; 函数(Function)是一段可重复使用的代码块&#xff0c;用于执行特定的任务或计算&#xff0c;并可以接受输入参数和返回输出结果。函数可以将复杂的问题分解为更小的子问题&#xff0c;提高代码的可读性和可维护性。 二、函数的组成&#xff1a; 在…

Spring Boot集成JWT快速入门demo

1.JWT是什么&#xff1f; JWT&#xff0c;英文全称JSON Web Token&#xff1a;JSON网络令牌。为了在网络应用环境间传递声明而制定的一种基于JSON的开放标准(RFC 7519)。这个规范允许我们使用JWT在客户端和服务端之间传递安全可靠的信息。JWT是一个轻便的安全跨平台传输格式&am…

前端零基础学习web3开发

目录 1 钱包 2 发起交易 3 出块 4 块高 5 矿工 6 Gas费 这一节&#xff0c;我们不说让人神往的比特币&#xff0c;不说自己会不会利用这个虚拟的货币来发财&#xff0c;也不说那些模模糊糊的知识&#xff0c;什么去中心化啦&#xff0c;什么奇妙的加密啦&#xff0c;我们…

AI 驱动强大是视频转换处理软件

由 AI 驱动的视频工具包。 增强、转换、录制和编辑视频AI 驱动的顶级视频工具包。 不论是老旧、低质、噪声或模糊的影片/图像&#xff0c;都能升级至 4K&#xff0c;稳定抖动的影片&#xff0c;提升帧率至 120/240fps&#xff0c;并能以全面 GPU 加速进行转换、压缩、录制和编辑…