(自用)机器学习python代码相关笔记

一些自存的机器学习函数和详细方法记录,欢迎指错。

前言:读取数据方法

import pandas as pd

import pandas as pddf = pd.read_csv('数据集.csv', header=0)
# header是从哪一行开始读起,一般是0,也可以取'infer'

一、数据处理(基本)

数据编码:

from sklearn.preprocessing import LabelEncoder

用于为非数值数据编码

使用例子:

from sklearn.preprocessing import LabelEncoder #用于将分类变量转换为数字形式。
#对非数值类型数据编码
for i in df.columns: #遍历df中每一列if df[i].dtypes == "object": #若该列为非数值数据,则对其编码lable = LabelEncoder() #创建新的LabelEncoder()lable = lable.fit(df[i]) #训练LabelEncoder(),使其适用于数据df[i] = lable.transform(df[i].astype(str)) #将原数据用训练好的LabelEncoder()替换

缺失值处理:

删除缺失值函数:pandas库里的dropna

df["year"] = df["year"].replace("N.V.", np.nan)
df = df.dropna(how='any')
#any表示只要有空缺就删除,还可选'all'

也可以采用平均值/中位数/knn填补法:

from sklearn.impute import KNNImputer # sklearn自带knn填补模型"""
# 平均值填补
pj = np.nanmean(X_train, axis=0)
for i in range(X_train.shape[0]):for j in range(X_train.shape[1]):if math.isnan(X_train[i][j]):X_train[i][j] = pj[j]
for i in range(X_test.shape[0]):for j in range(X_test.shape[1]):if math.isnan(X_test[i][j]):X_test[i][j] = pj[j]"""
"""
# 中位数填补
zw = np.nanmedian(X_train, axis=0)
print(zw)
for i in range(X_train.shape[0]):for j in range(X_train.shape[1]):if math.isnan(X_train[i][j]):X_train[i][j] = zw[j]"""
# KNN填补
imputer = KNNImputer(n_neighbors=5)
X_train = pd.DataFrame(imputer.fit_transform(X_train))

数据类型转换:

df['year'] = df['year'].astype(np.int64)
#将year这一列转化为int数据类型

文本类型转数值:

from sklearn.feature_extraction.text import CountVectorizer

from sklearn.feature_extraction.text import CountVectorizerver = CountVectorizer()
X = ver.fit_transform(df['text']).toarray()

二、标准化特征

from sklearn.preprocessing import StandardScaler

#用于标准化特征,使其均值为0,方差为1。

from imblearn.over_sampling import RandomOverSampler

#用于处理类别不平衡问题(长尾分布),随机增加少数类样本的数量。

下面是数据挖掘课一个处理长尾分布的实验中对长尾分布数据预处理的一部分

from sklearn.preprocessing import StandardScaler
from imblearn.over_sampling import RandomOverSampler 
import pandas as pdros = RandomOverSampler(sampling_strategy='minority')
# 初始化RandomOverSampler,samping_strategy='minority'表示要增加少数类样本的数量
X, y = ros.fit_resample(X, y)
# 执行RandomOverSampler,平衡特征X和标签yscaler = StandardScaler()
# 初始化StandardScaler
X_standardized = scaler.fit_transform(X)
# 使用StandardScaler对X进行拟合并转换,返回标准化后的数据X_standardizedX_std = pd.DataFrame(X_standardized, columns = X.columns)
#使用pandas.DataFrame将标准化后的数据转换为数据框形式,并保留原始的列名

三、train_test_split划分训练集测试集

from sklearn.model_selection import train_test_split

用于划分数据

from sklearn.model_selection import train_test_splitX = df.drop("region",axis=1)
# 将读取的处理好的数据去除特征行存入X中
y = df['region']
# 将特征行分开存入y中X_train, X_test, y_train, y_test = train_test_split(X_std, y, test_size=0.6, random_state=42)
#其中test_size表示划分比例,如值为0.6表示训练集占0.6
#random_state表示随机数,取的随机数相同那么划分也会一模一样

四、一些机器学习模型(分类)

支持向量机(SCV):from sklearn.svm import SVC

K近邻:from sklearn.neighbors import KNeighborsClassifier

随机森林:from sklearn.ensemble import RandomForestClassifier

多层感知机(神经网络)(MLP):from sklearn.neural_network import MLPClassifier

高斯朴素贝叶斯:from sklearn.naive_bayes import GaussianNB

决策树:from sklearn.tree import DecisionTreeClassifier

梯度提升树:from xgboost import XGBClassifier

使用实例(都套这个模板就行):

from sklearn.ensemble import RandomForestClassifiermodel = RandomForestClassifier()model.fit(X_train, y_train)y_pred = model.predict(X_predict)

在长尾分布实验中,我学到了一个对数据重加权的方法:使用class_weight参数

from sklearn.utils.class_weight import compute_class_weighty_uni = y["winery"].unique().ravel()classes = np.array(y_uni)
class_weights = compute_class_weight('balanced', classes=classes, y=y)
class_weight_dict = {0: class_weights[0], 1: class_weights[1]}model = RandomForestClassifier(class_weight=class_weight_dict)

五、一些机器学习模型(回归)

决策树:from sklearn.tree import DecisionTreeRegressor

(别的把上面的Classifier改成Regressor应该就行了)

六、准确度计算

from sklearn.metrics import accuracy_score

计算准确度,前一个参数是实际结果,后一个参数是预测结果。

from sklearn.metrics import accuracy_scoreACC = accuracy_score(y_test, y_pred)

七、画图方法

import matplotlib.pyplot as plt

比如要画出样本特征柱状图:

import matplotlib.pyplot as pltplt.figure(figsize=(15,5)) # 图的大小plt.subplot(121) # 分成两个图,121分别是三个参数,表示有1行表2列表(共两个表),现在取第1行表
df['type'].hist() # 生成‘type’的柱状图
plt.subplot(122) # 现在取第二行表
df['region'].hist() # 生成‘region’的柱状图

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

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

相关文章

springboot框架使用RabbitMQ举例代码

以前分享过一个理论有兴趣的小伙伴可以看下 https://blog.csdn.net/Drug_/article/details/138164180 不多说 还是直接上代码 第一步&#xff1a;引入依赖 可以不指定版本 <!-- amqp --><dependency><groupId>org.springframework.boot</groupId…

vscode 创建 vue 项目时,配置文件为什么收缩到一起展示了?

一、前言 今天用 vue 官方脚手架创建工程&#xff0c;然后通过 vscode 打开项目发现&#xff0c;配置文件都被收缩在一起了。就像下面这样 这有点反直觉&#xff0c;他们应该是在同一层级下的&#xff0c;怎么会这样&#xff0c;有点好奇&#xff0c;但是打开资源管理查看&…

php开发实战分析(8):优化MySQL分页查询与数量统计,提升数据库性能

在开发过程中&#xff0c;我们遇到了一段用于从数据库中查询部门信息的PHP代码。该代码负责根据不同的条件&#xff08;如部门名称和来源&#xff09;筛选数据&#xff0c;并返回分页结果及总记录数。然而&#xff0c;原始代码存在一些问题&#xff0c;包括重复的查询条件构建逻…

大学适合学C语言还是Python?

在大学学习编程时&#xff0c;选择C语言还是Python&#xff0c;这主要取决于你的学习目标、专业需求以及个人兴趣。以下是对两种语言的详细比较&#xff0c;帮助你做出更明智的选择&#xff1a; C语言 优点&#xff1a; 底层编程&#xff1a;C语言是一种底层编程语言&#x…

数据结构,问题 F: 括弧匹配检验

题目描述 假设表达式中允许包含两种括号&#xff1a;圆括号和方括号&#xff0c;其嵌套的顺序随意&#xff0c;如&#xff08;&#xff3b; &#xff3d;&#xff08;&#xff09;&#xff09;或&#xff3b;&#xff08;&#xff3b; &#xff3d;&#xff3b; &#xff3d;&a…

yolov8涨点系列之优化器替换

文章目录 优化器替换的重要性加速收敛速度提高模型精度增强模型的泛化能力适应不同的数据集和任务特点 优化器替换步骤(1)准备代码&#xff1a;(2)导入优化器(3)替换优化器 本文将以替换Lion为优化器的方式展示如何对Ultrayluic的yolov8进行优化器替换。 优化器替换的重要性 加…

Vue 学习随笔系列十三 -- ElementUI 表格合并单元格

ElementUI 表格合并单元格 文章目录 ElementUI 表格合并单元格[TOC](文章目录)一、表头合并二、单元格合并1、示例代码2、示例效果 一、表头合并 参考&#xff1a; https://www.jianshu.com/p/2befeb356a31 二、单元格合并 1、示例代码 <template><div><el-…

每天10个vue面试题(七)

1、Vue如何监听页面url中hash变化&#xff1f; 监听 $route 的变化&#xff1a;在Vue中&#xff0c;你可以使用watch属性来监听$route的变化。当路由发生变化时&#xff0c;会执行相应的处理函数。使用 window.location.hash&#xff1a;直接读取window.location.hash的值。这…

C++ -- 模板进阶

非模板类型参数 模板参数分为类型形参与非类型形参。类型形参&#xff1a;出现在模板参数列表中&#xff0c;跟在class 或 typename之类的参数类型名称。非类型形参&#xff1a;就是用一个常量作为类(函数)模板的一个参数&#xff0c;在类(函数)模板中将该参数当成常量来使用。…

今日 AI 简报|零样本视频生成、移动端轻量语言模型、自动驾驶多模态模型等前沿 AI 技术集中亮相

❤️ 如果你也关注大模型与 AI 的发展现状&#xff0c;且对大模型应用开发非常感兴趣&#xff0c;我会快速跟你分享最新的感兴趣的 AI 应用和热点信息&#xff0c;也会不定期分享自己的想法和开源实例&#xff0c;欢迎关注我哦&#xff01; &#x1f966; 微信公众号&#xff…

SQL中的IN语句和EXISTS语句

大家好&#xff0c;使用SQL时经常需要根据其他表的值过滤数据&#xff0c;常见方法是使用IN和EXISTS子句。这两者都用于检查子查询中值的存在&#xff0c;但它们的工作方式略有不同&#xff0c;并可能对性能产生不同影响。本文将探讨IN和EXISTS的定义、工作原理及其使用场景&am…

【解决方案】Mac上禁止chrome自动更新的三种方法

【目的需求】 新版chrome直接用打印机打印页面时&#xff0c;打印任务总是响一下就消失了&#xff0c;使用safari浏览器无此问题&#xff0c;使用早期版本chrome也没有这一问题。因此想固定chrome版本&#xff0c;不要自动更新。尝试了网上的多种方法均失败。 【解决方案】 …

【运维管理】如何像管理linux一样,批量管理windows主机

很多小伙伴在维护的时候也会难免遇见批量的windows操作&#xff0c;那么一定有人就会问是否有方法可以用命令来批量操作windows主机&#xff0c;其实非常简单&#xff0c;windows早就为我们提供了一个内置的批量管理工具&#xff0c;那就是这个强大的POWERSHELL&#xff0c;今天…

如何监控员工上网行为?实现精准监控员工上网行为的5个妙招分享!(企业:稳了!)

如何监控员工上网行为&#xff1f; 员工上班时的"摸鱼"行为员工上网行为&#xff08;做与工作无关的活动&#xff0c;如浏览社交媒体、游戏、网购等&#xff09;&#xff0c;不仅影响工作效率&#xff0c;还可能破坏团队氛围&#xff0c;阻碍企业发展。 那么&#…

迷茫内耗的一天

迷茫的一天 今天看了看动态规划&#xff0c;不知不觉看了三四个小时&#xff0c;英语也没背&#xff0c;项目也已经停止了一个星期就看了几个小时的xml文件(不停ctrlB)&#xff0c;好累&#xff0c;感觉要学的好多。这难道是必经之路吗&#xff1f; 一个星期算法已经刷了40道题…

Allegro: 开源的高级视频生成模型

我们很高兴地宣布 Allegro 的开源发布&#xff0c;这是 Rhymes AI 先进的文本到视频模型。Allegro 是一款功能强大的人工智能工具&#xff0c;能将简单的文字提示转化为高质量的视频短片&#xff0c;为人工智能生成视频领域的创作者、开发者和研究人员开辟了新的可能性。我们希…

<项目代码>YOLOv8 猫狗识别<目标检测>

YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv8具有更高的…

「Mac畅玩鸿蒙与硬件21」鸿蒙UI组件篇11 - Canvas 组件的静态进阶应用

在鸿蒙应用开发中,Canvas 组件不仅用于基础绘图,还提供了处理复杂路径和渐变效果的多种手段,帮助开发者实现精美的静态图形。本篇将介绍如何在 Canvas 中绘制复杂路径、创建渐变填充效果。 关键词 Canvas 组件复杂路径绘制渐变填充一、Canvas 的复杂路径绘制 Canvas 提供了…

Java 用户随机选择导入ZIP文件,解压内部word模板并入库,Windows/可视化Linux系统某麒麟国防系统...均可适配

1.效果 压缩包内部文件 2.依赖 <!--支持Zip--><dependency><groupId>net.lingala.zip4j</groupId><artifactId>zip4j</artifactId><version>2.11.5</version></dependency>总之是要File类变MultipartFile类型的 好像是…

mint-ui Picker 显示异常

mint-ui Picker 显示异常 现象 最近一个老项目页面显示异常&#xff0c;使用mint-ui Picker显示异常,直接显示成了 数据对象&#xff0c;而不是具体travelName 字段 组件 mint-ui Picker 使用方式(vue方式) // template <mt-picker :slots"slots" value-key…