机器学习---基于sklearn的机器学习入门

一.什么是机器学习

        机器学习是人工智能的一个分支,它使计算机系统能够利用数据和算法自动学习和改进其性能。简单来说,机器学习涉及开发数学模型,这些模型可以帮助计算机使用样本数据(即训练数据)来做出预测或决策,而无需明确编程指令。

        简而言之,机器学习就是从历史数据中获取规律,预测未来发展情况

二.机器学习算法的分类

  • 监督学习:使用标记的训练数据来学习,目标是预测输出。
    • 目标值为类别:分类问题
    • 目标值为连续型数字:回归问题
  • 无监督学习:使用未标记的训练数据来发现数据中的模式或结构。
    • 没有特定目标值:无监督学习
  • 半监督学习:结合了少量标记数据和大量未标记数据。
  • 强化学习:通过与环境的交互来学习,目标是最大化某种累积奖励。

三.机器的开发过程

机器学习的过程通常包括以下几个步骤:

  1. 数据收集:收集用于训练模型的数据。
  2. 数据预处理:清洗数据,处理缺失值,进行特征选择等。
  3. 选择模型:根据问题的性质选择一个合适的机器学习算法。
  4. 训练模型:使用训练数据来训练选定的模型。
  5. 评估模型:使用测试数据来评估模型的性能。
  6. 参数调优:根据模型的表现调整模型参数以优化性能。
  7. 模型部署:将训练好的模型部署到实际应用中。

四.数据集---sklearn中包含的数据集

1.在sklearn中,使用load获取小数据集,fetch获取大数据集

from sklearn.datasets import load_iris,fetch_20newsgroups
# load_iris 经典鸢尾花数据集,小数据集使用"load"
iris = load_iris()
news = fetch_20newsgroups()

2.数据集的基本信息查看

print("鸢尾花数据集:\n",iris)
print("查看数据集描述:\n", iris.DESCR)
print("查看特征值的名字:\n",iris.feature_names)
print("查看特征值:\n",iris.data,iris.data.shape)

iris:        

直接打印数据集会得到一个很大的字典, 其中key为"data"和"target",value是一个充满数据的一个数组

iris.DESCR

可以查看sklearn官方对该数据集的描述

iris.feature_name:

查看特征值的名字,其中target的value是一个值为[0,1,2]的数组,分别表示该数据集的不同特征

iris.data

查看isri中key为"data"的value

iris.data.shape

查看"data"的形状,包括有几条数据,几个特征值

五.数据处理----数据集的划分

sklearn提供的API中,包括了数据集的划分

x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=22)
print("训练集的特征值:\n", x_train, x_train.shape)

train_test_split():该方法需要传入参数

        1.数据集的数据:既数据集中的"data"

        2.数据集的目标值:既数据集中的"target"

        3.测试集的大小:默认值0.25(25%)可以自己调参

        4.random_state:随机数种子,通常用于控制随机数生成器的种子,目的是为了确保代码的可重复性,即每次运行代码时都能得到相同的结果

六.特征工程

1.什么是特征工程

        特征工程是机器学习中的一个重要步骤,它涉及从原始数据中选择、创建和转换数据特征,以提高机器学习模型的性能。特征工程的目的是提取出对模型预测最有用的信息,并以一种模型能够理解的方式呈现。

        特征工程最重要的一个操作就是对数据进行处理,合理的处理数据可以提高机器学习的性能,其中入门阶段主要学习的数据处理包括特征提取,特征预处理以及降维,下面将重点说明.

2.特征提取

        1)特征处理API
sklearn.feature_extraction 
        2)字典特征提取

作用:对字典数据进行特征值化

from sklearn.feature_extraction import DictVectorizer
# 1、实例化一个转换器类
transfer = DictVectorizer(sparse=True)

# 2、调用fit_transform()
data_new = transfer.fit_transform(data)
print("data_new:\n", data_new.toarray(), type(data_new))
print("特征名字:\n", transfer.get_feature_names())

特征提取的父类是一个转换器类,都继承转换器,需要构造一个实例才能使用里面的方法,

DictVectorizer():可传入的参数主要有:

        sparse:默认为 True,决定转换结果是否为稀疏矩阵

        sort:默认为 True,决定在拟合过程中是否对 feature_names_vocabulary_ 进行排序。

DictVectorizer():可以使用的方法主要有:

        transfer.fit_transform(data):将传入的data进行计算(fit),然后将其转换为一个稀疏矩阵

        3)文本特征提取

作用:对文本数据进行特征值化

from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer
# 1、实例化一个转换器类
transfer = TfidfVectorizer(stop_words=["一种", "所以"])

# 2、调用fit_transform
data_final = transfer.fit_transform(data_new)
print("data_new:\n", data_final.toarray())
print("特征名字:\n", transfer.get_feature_names())
        4)图像特征提取

                深度学习在学.

3.特征预处理

1)什么是特征预处理

        特征预处理是数据预处理的一部分,它涉及将原始数据转换成适合机器学习算法处理的形式。特征预处理的目的是提高模型的性能、准确性和训练效率。

        主要的内容就数值型数据的无量纲化:归一化,标准化

        无量纲化::调整数据特征的尺度,使其位于相同的数值范围内

2)为什么要进行无量纲化(特征缩放)
  • 加快学习算法的收敛速度
  • 提高模型的性能和准确性
  • 避免数值计算问题
  • 使不同尺度的特征对模型的影响均衡
3)特征预处理API
sklearn.prepeocessing
4)归一化

   定义:通过对原始数据进行变换,把数据映射到[0,1]之间

from sklearn.preprocessing import MinMaxScaler

# 1、获取数据
data = pd.read_csv("dating.txt")
data = data.iloc[:, :3]
print("data:\n", data)

# 2、实例化一个转换器类
transfer = MinMaxScaler(feature_range=[0, 1])

# 3、调用fit_transform
data_new = transfer.fit_transform(data)
print("data_new:\n", data_new)

MinMaxScaler(feature_range=[0, 1]):实例化一个转换器,传入的参数为特征范围,默认是[0,1]

处理后的结果:

转换器类的方法比较通用:

  • fit_transform:这个方法结合了拟合(fit)和转换(transform)两个步骤。它首先拟合数据,学习数据的特征(例如,计算均值和标准差),然后应用这些学到的特征来转换数据。

  • fit:这个方法用于拟合数据,学习数据的特征,但不进行转换。例如,它可以计算每列的平均值和标准差,为后续的转换步骤做准备。fit只需要调用一次后就可以存储,后面只需要转换

  • transform:在数据已经被拟合(fit)之后,使用这个方法来转换数据。它应用在拟合步骤中学习到的特征来转换数据,例如,使用计算出的平均值和标准差来标准化数据。

  • get_params:获取转换器的参数。

  • set_params:设置转换器的参数。

  • fit_resample:结合拟合和重新采样的方法,用于处理数据不平衡问题。

  • score_samples:返回样本的分数或权重,这在某些转换器中可能适用,如基于树的转换器。

  • score_samples_:类似于score_samples,但返回的是稀疏矩阵。

归一化优点:

        简单易实现 线性可逆

归一化缺点:

        对异常值敏感

5)标准化

定义:是一种将数据特征缩放到均值为0,标准差为1的方法。将数据处理为均值为0,标准差为1的正态分布

from sklearn.preprocessing import StandardScaler
# 1、获取数据
data = pd.read_csv("dating.txt")
data = data.iloc[:, :3]
print("data:\n", data)

# 2、实例化一个转换器类
transfer = StandardScaler()

# 3、调用fit_transform
data_new = transfer.fit_transform(data)
print("data_new:\n", data_new)

处理后的结果:

4.特征降维

1)什么是特征降维

         降维是减少数据集中特征数量的过程,目的是简化模型,提高计算效率,减少过拟合,并可能提高模型的泛化能力。

        降维主要包括两种方式:特征选择以及主成分分析.下面将具体讲述特征选择和主成分分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值