怎么查看网站的安全性,义乌百度广告公司,做网站有用没,下载京东网上商城一、机器学习
机器学习#xff08;Machine Learning, ML#xff09;是人工智能#xff08;Artificial Intelligence, AI#xff09;的一个分支#xff0c;它致力于开发能够从数据中学习并改进性能的算法和模型。机器学习的核心思想是通过数据和经验自动优化算法#xff…一、机器学习
机器学习Machine Learning, ML是人工智能Artificial Intelligence, AI的一个分支它致力于开发能够从数据中学习并改进性能的算法和模型。机器学习的核心思想是通过数据和经验自动优化算法而不是通过显式的编程规则。
1.1、机器学习的基本概念 数据机器学习的基础是数据。数据可以是结构化的如数据库中的表格数据或非结构化的如文本、图像、音频等。 模型模型是机器学习算法的核心它是一个数学表示用于从输入数据中学习并做出预测或决策。 学习学习是指模型通过数据进行训练调整其内部参数以最小化预测误差的过程。 特征特征是数据中的变量或属性模型使用这些特征来进行预测或分类。 标签标签是数据中的目标变量模型通过学习特征和标签之间的关系来进行预测。
1.2、机器学习的分类
监督学习半监督学习无监督学习强化学习
二、机器学习步骤
收集数据数据是机器学习的基础。准备数据高质量的数据才能提高模型精准度。训练模型对处理后的数据进行训练并留存部分数据用作验证。评估模型对模型进行验证确定模型的精准度。提高性能对代码和模型进行优化。
2.1、前期准备——scikit-learn的安装
执行下面的代码
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scikit-learn或
pip install scikit-learn2.2、数据集
2.2.1、数据集的分类
玩具数据集轻量的数据集直接在sklearn库本地无需下载 示例
from sklearn.datasets import load_iris # type: ignoreiris load_iris() # type: ignore
print(iris.data)现实数据集数据量大需要从网络上下载
from sklearn.datasets import fetch_20newsgroups #这是一个20分类的数据news fetch_20newsgroups(data_homeNone,subsetall)
print(len(news.data))2.2.2、数据集的操作
# data 特征
# feature_names 特征描述
# target 目标
# target_names 目标描述
# DESCR 数据集的描述
# filename 下后到本地保存后的文件名2.2.3、读取本地文件
本地csv文件
import pandas as pd # type: ignoredata pd.read_csv(../dataset/ss.csv)
print(data)本地ecxel文件
在读取excel文件时需要使用openpyxl来读取 我是用pip命令来安装的该引擎
pip install openpyxlimport pandas as pd# type: ignore# 指定使用 openpyxl 引擎来读取 Excel 文件
data pd.read_excel(../dataset/ss.xlsx, engineopenpyxl)
# print(data)# 选择特定的列
x data.iloc[:, [0, 1, 2]]
y data.iloc[:, [-2]]# print(x)
print(y)2.2.4、数据集的划分
数据集划分函数
from sklearn.model_selection import train_test_split # type: ignore参数注释
参数 (1) *array 这里用于接收1到多个列表、numpy数组、稀疏矩阵或padas中的DataFrame。 (2) **options 重要的关键字参数有 test_size 值为0.0到1.0的小数表示划分后测试集占的比例 random_state 值为任意整数表示随机种子使用相同的随机种子对相同的数据集多次划分结果是相同的。否则多半不同 strxxxx 分层划分,填y 2 返回值说明 返回值为列表list, 列表长度与形参array接收到的参数数量相关联, 形参array接收到的是什么类型list中对应被划分出来的两部分就是什么类型
list数据数据划分
import numpy as np# type: ignore
from sklearn.model_selection import train_test_split# type: ignoreX[[11,2,3,31,111],[12,2,3,32,112],[1,23,3,33,113],[14,2,3,34,114],[15,2,3,35,115],[16,2,3,36,116],[1,23,3,36,117],[1,23,3,316,118],[1,23,3,326,119],[1,23,3,336,120]
]
y[1,1,1,1,1,2,2,2,2,2]
# 打印生成的数据
print(随机生成的x数据:)
print(X)
print(标签y:)
print(y)# 划分训练集和测试集
x_train, x_test, y_train, y_test train_test_split(X, y, train_size0.8, stratifyy)# 打印划分结果
print(训练集 x_train:\n)
print(x_train)
print(测试集 x_test:\n)
print(x_test)
print(训练集标签 y_train:\n)
print(y_train)
print(测试集标签 y_test:\n)
print(y_test)ndarray的数据集划分
from sklearn.model_selection import train_test_split# type: ignore
import numpy as np# type: ignorex np.arange(100).reshape(50,2)
# print(x)
x_train,x_test train_test_split(x,test_size0.8,random_state42)
print(x_train)
print(----------------------------------)
print(x_test)dataFrame的数据集划分
import numpy as np# type: ignore
import pandas as pd# type: ignore
from sklearn.model_selection import train_test_split# type: ignore# 数据集的划分
data np.arange(1,100).reshape(33, 3)
data pd.DataFrame(data,columns[a,b,c])
# print(data)
x_train,x_test train_test_split(data,test_size0.3)
print(\n,x_train)
print(--------------------------)
print(\n,x_test)玩具数据集划分
# 鸢尾花数据集划分
from sklearn import datasets# type: ignore
from sklearn.model_selection import train_test_split# type: ignoreiris datasets.load_iris()
x iris.data
y iris.target
x_train, x_test, y_train, y_test train_test_split(x, y, test_size0.2, random_state4)
print(x_train.shape)
print(x_test.shape)
print(y_train.shape)
print(y_test.shape)
print(iris.feature_names)
print(iris.target_names)现实数据集划分 import numpy as np# type: ignorefrom sklearn.datasets import fetch_20newsgroups# type: ignore
from sklearn.model_selection import train_test_split# type: ignorenew_date fetch_20newsgroups(data_home../dataset/,subsettrain)
# print(new_date.data[0])x_train,x_test,y_train,y_test train_test_split(new_date.data,new_date.target,test_size0.2,random_state666)
print(np.array(x_train).shape)
print(np.array(x_test).shape)
print(np.array(y_train).shape)
print(np.array(y_test).shape)print(new_date.target_names)2.3、特征工程
特征工程api
# DictVectorizer 字典特征提取
# CountVectorizer 文本特征提取
# TfidfVectorizer TF-IDF文本特征词的重要程度特征提取
# MinMaxScaler 归一化
# StandardScaler 标准化
# VarianceThreshold 底方差过滤降维
# PCA 主成分分析降维#转换器对象调用fit_transform()进行转换, 其中fit用于计算数据transform进行最终转换fit_transform()可以使用fit()和transform()代替fit_transform()、fit()和transform()之间的区别1. fit()
作用: fit() 方法用于计算数据集的统计信息如均值、方差等以便后续的转换操作。
返回值: 无返回值直接在对象内部存储计算结果。
适用场景: 当你需要对训练数据集进行统计信息的计算时使用。2. transform()
作用: transform() 方法使用 fit() 计算的统计信息对数据集进行转换。
返回值: 返回转换后的数据集。
适用场景: 当你需要对训练数据集或测试数据集进行相同的转换时使用。3. fit_transform()
作用: fit_transform() 方法结合了 fit() 和 transform() 的功能先计算统计信息然后对数据集进行转换。
返回值: 返回转换后的数据集。
适用场景: 当你需要对训练数据集进行一次性计算和转换时使用。字典的特征提取和数据集划分
from sklearn.feature_extraction import DictVectorizer# type: ignore
from sklearn.model_selection import train_test_split# type: ignoredata_dict [{city: 北京, count:2300,tempertrye: 41},{city: 上海, count:2300,tempertrye: 39}, {city: 深圳, count:2750,tempertrye: 30},{city: 广州, count:2500,tempertrye: 40},{city: 杭州, count:2800,tempertrye: 33},{city: 西安, count:2700,tempertrye: 28},{city: 西安, count:2700,tempertrye: 28}
]# sparseFalse:表示返回完整的矩阵,True:表示返回稀疏矩阵
model DictVectorizer(sparseFalse)
data_new model.fit_transform(data_dict)
# print(data_new)
x_train,y_train train_test_split(data_new,test_size0.2,random_state666)
print(x_train)
print(------------------------------------------------------------------------------)
print(y_train)文本特征提取 from sklearn.feature_extraction.text import CountVectorizercorpus [I love machine learning.Its awesome., Its a amazon book, Amazon is a great company]# 创建一个词频提取对象
vectorizer CountVectorizer(stop_words[amzzon])
# 提取特征词频
X vectorizer.fit_transform(corpus)print(X)print(X.toarray())
# 打印特征词频
print(vectorizer.get_feature_names_out())
CountVectorizer 中文本特征提取
中文提取需要用到库jieba
使用下面的命令进行安装
pip install jiebaimport jieba
from sklearn.feature_extraction.text import CountVectorizer
# arr list(jieba.cut(我爱北京天安门))
# print (arr)
# str01 .join(arr)
# print (str01)
def my_cut(text):#传入没有断词的文本用jieba分词工具转化为数据容器然后把数据容器中的元素用空格连接起来return .join(list(jieba.cut(text)))corpus [我爱北京天安门,我爱成都天府广场]
# 创建一个词频提取对象
vectorizer CountVectorizer(stop_words[])
# 提取词频
data [my_cut(el) for el in corpus]
x vectorizer.fit_transform(data)
# print(x)
# print(x.toarray())
print(vectorizer.get_feature_names_out())data02 pd.DataFrame(x.toarray(),columnsvectorizer.get_feature_names_out())
print(data02)
TfidfVectorizer TF-IDF文本特征词的重要程度特征提取
import jieba
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizerdef cut_words(text):return .join(list(jieba.cut(text)))data [教育学会会长期间坚定支持民办教育事业, 扶持民办,学校发展事业,事业做出重大贡献]
data_new [cut_words(v) for v in data]transfer TfidfVectorizer(stop_words[期间, 做出,重大贡献])
data_final transfer.fit_transform(data_new)pd.DataFrame(data_final.toarray(), columnstransfer.get_feature_names_out())无量纲化
MinMaxScaler 归一化
data [[1, 2, 3, 4],[1, 2, 3, 4],[1, 2, 3, 4],[1, 2, 3, 4]
]
tran MinMaxScaler(feature_range(1,2))
data tran.fit_transfrom(data)
print(data)StandardScaler 标准化
import numpy as np
from sklearn.preprocessing import StandardScaler# 创建一个示例数据集
X np.array([[1, 2], [3, 4], [5, 6]])# 初始化 StandardScaler
scaler StandardScaler()# 对训练数据进行 fit_transform
X_train_scaled scaler.fit_transform(X)# 打印标准化后的训练数据
print(标准化后的训练数据:)
print(X_train_scaled)# 创建一个新的测试数据集
X_test np.array([[7, 8], [9, 10]])# 对测试数据进行 transform
X_test_scaled scaler.transform(X_test)# 打印标准化后的测试数据
print(标准化后的测试数据:)
print(X_test_scaled)2.4、特征降维
VarianceThreshold 低方差过滤特征选择
# 1、获取数据,data是一个DataFrame,可以是读取的csv文件
datapd.DataFrame([[10,11],[11,13],[11,11],[11,15],[11,91],[11,13],[11,12],[11,16]])
print(data:\n, data)
# 2、实例化一个转换器类
transfer VarianceThreshold(threshold1)#0.1阈值
# 3、调用fit_transform
data_new transfer.fit_transform(data)
print(data_new:\n,data_new)
PCA降维
from sklearn.dec**** import PCAdata [[1, 2, 3, 4],[1, 2, 3, 4],[1, 2, 3, 4],[1, 2, 3, 4]
]
pac PCA(n_com**** 0.95)data pca.fit_transfrom(data)print(f降维后的数据为{data}}