机器学习算法基础–第二天

2163-王同学

发表文章数:35

首页 » 数据结构 » 正文

数据降维

定义:减少特征数量
数据降维分为两种:

  • 特征选择:单纯地从提取到的所有特征中选择部分特征作为训练集特征,特征在选择前和选择后可以改变值,也可以不改变值,但是选择后的特征维数肯定比选择前小
  • 主成分分析

特征选择

  • 主要方法:
    1.Filter(过滤式):Variance Threshold
    2.Embedded(嵌入式):正则化、决策树
    3.Wrapper(包裹式)

VarianceThreshold(threshold=0.0)

  • 删除所有低方差特征
  • Variance.fit_transform(x)
    其中:
    X:numpy array格式的数据[n_samples,n_features]
    返回值:训练集差异低于threshold 的特征将被删除,默认值是保留所有非零方差特征,即删除所有样本中具有相同值的特征

使用:

from sklearn.feature_selection import  VarianceThreshold


def var():
    """
    特征选择-删除低方差的特征
    :return: None
    """
    var = VarianceThreshold(threshold=0.0)
    data = var.fit_transform([[0,2,0,3],[0,1,4,3],[0,1,1,3]])
    print(data)
if __name__ == '__main__':
    var()

输出:

[[2 0]
 [1 4]
 [1 1]]

主成分分析

  • api:sklearn.decomposition
  • 定义:PCA是一个种分析、简化数据集的技术,是数据维数压缩,尽可能降低元数据的维数(复杂度),损失少量信息,可以削减回归分析或者聚类分析中特征的数量(当特征数量达到上百个以上时可以选择使用)
  • 方法:PCA(n_component=None)→将数据分解为较低维数空间

机器学习算法分类

  • 监督学习(预测):特征值+目标值
    • 分类:K-邻近算法、贝叶斯分类、决策树与随机森林、逻辑回归、神经网络,目标值离散型
    • 回归:线性回归、岭回归,目标值连续型
    • 标注:隐马尔可夫模型
  • 无监督学习:特征值
    • 聚类:k-means

机器学习开发流程

sklearn数据集

机器学习一般的数据集会划分两个部分:

  • 训练数据:用于训练,构建模型
  • 测试数据:在模型检验时使用,用于评估模型是否有效

sk-learn数据集API介绍

  • sklearn.datasets:加载获取流行数据集
    datasets.load_*():获取小规模数据集,数据包含在datasets里
    datasets.fetch_*(data_home=None,subset=‘train’):获取大规模数据集,需要从网络上下载:
    1.data_home:表示数据集下载的目录,默认为:~/scikit_learn_data/
    2.sbuset:‘train’或者’test’,'all’可选,选择要加载的数据集

获取数据集返回的类型

  • data:特征数据数组,是[n_samples*n_features]的二维numpy.ndarray数组
  • target:标签数组,是n_samples的以为numpy.ndarray数组
  • DESCR:数据描述
  • feature_names:特征名
  • target_names:标签名
    小数据集
from sklearn.datasets import load_iris
from sklearn.model_selection import  train_test_split
li = load_iris()

#注意返回值,训练集 train train x_train,y_train 测试集 test test_x,test_y
x_train,y_train,test_x,test_y=train_test_split(li.data,li.target,test_size=0.25)
print('训练集特征值和目标值:',x_train,y_train)
print('测试集特征值和目标值:',test_x,test_y)

估计器

机器学习算法基础--第二天

k-近邻算法(KNN)–分类算法

  • 本质:通过’邻居’求得自己的类别,通过欧式距离来判别与邻居的远近
  • api:sklearn.neighbors.KNeighborsClassifier(n_neighbors,algorithm=)
    – n_neighbors:int类型,默认为5,邻居数
    – algorithm:{‘auto’,‘ball_tree’,‘ke_tree’,‘brute’},可选用与计算最近邻居的算法,'auto’将尝试根据传递给fit方法的值来决定最合适的算法
  • 优点:简单,易于理解,易于实现,无需估计参数,无需训练
  • 缺点:懒惰算法,对测试样本分类时的计算量大,内存开销大,必须指定k值,k值选择不当则分类精读不能保证

实例:

import pandas as pd
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier

# Facebook V: Predicting Check In
# 导入训练集
tra = pd.read_csv(r"D:/桌面/位置预测/train.csv")

# 处理数据
# 缩小数据集
tra = tra.query("x>1.0 & x<1.25 & y>2.5 &y<2.75")
# 处理时间的数据
time_value = pd.to_datetime(tra['time'], unit='s')

# print(time_value.head(5))

# 把日期格式转换成字典格式
time_value = pd.DatetimeIndex(time_value)

# 构造一些特征
tra['day'] = time_value.day
tra['hour'] = time_value.hour
tra['weekday'] = time_value.weekday

# 把原本的time,以及row_id特征删除
tra = tra.drop(['time'], axis=1)  # 注意,在pandas中axis=1表示列

tra = tra.drop(['row_id'], axis=1)

# 把签到数量少于5个目标位置删除
place_count = tra.groupby('place_id').count()

tf = place_count[place_count.x > 5].reset_index()
tra = tra[tra['place_id'].isin(tf.place_id)]

# 取出数据当中的特征值和目标值

y = tra['place_id']  # 目标值
x = tra.drop(['place_id'], axis=1)  # 特征值

# 进行分割训练集和测试集
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25)

# 特征工程---标准化,对测试集和训练集的特征值进行标准化
std = StandardScaler()
x_train = std.fit_transform(x_train)
x_test = std.transform(x_test)

# 进入knn算法流程
knn = KNeighborsClassifier()
# 拟合
knn.fit(x_train, y_train)
# 得出预测结果
y_predict = knn.predict(x_test)
print("预测的目标签到位置为:", y_predict)
# 得出准确率
print("预测准确率:", knn.score(x_test, y_test))

输出:

预测的目标签到位置为: [3312463746 6424972551 4932578245 ... 5270522918 2946102544 7803770431]
预测准确率: 0.49089602299952084

Process finished with exit code 0

未经允许不得转载:作者:2163-王同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《机器学习算法基础–第二天》 发布于2021-10-14

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录