当前位置: 首页 > article >正文

机器学习(基础1)

数据集

sklearn玩具数据集

数据量小,数据在sklearn库的本地,只要安装了sklearn,不用上网就可以获取

sklearn现实世界数据集

数据量大,数据只能通过网络获取(为国外数据集,下载需要梯子)

sklearn加载玩具数据集

示例:获取鸢尾花数据

以鸢尾花数据集为例:

from sklearn.datasets import load_iris
iris = load_iris()  # 鸢尾花数据
print(iris.data)  # 特征数据
print(iris.feature_names)  # 特征描述
print(iris.target)  # 目标形状
print(iris.target_names)  # 目标描述

特征有:

花萼长 sepal length;花萼宽sepal width; 花瓣长 petal length;花瓣宽 petal width。

三分类:

0-Setosa山鸢尾

1-Versicolour变色鸢尾

2-Virginica维吉尼亚鸢尾

可使用numpy,pandas将特征和目标一起显示出来

import numpy as np
import pandas as pd 
from sklearn.datasets import load_iris
iris = load_iris()
feature = iris.data
target = iris.target
target.shape = (len(target),1)
data = np.hstack([feature,target])
cols = iris.feature_names
cols.append('target')
arr = pd.DataFrame(data,columns=cols)
print(arr)

sklearn获取现实世界数据集

所有现实世界数据,通过网络才能下载后,默认保存的目录可以使用下面api获取。实际上就是保存到home目录

from sklearn import datasets
datasets.get_data_home()  #查看数据集默认存放的位置

获取现实世界数据需要"科学上网"。

示例:获取20分类新闻数据
from sklearn.datasets import fetch_20newsgroups #这是一个20分类的数据
news = fetch_20newsgroups(data_home='./src',subset='all')
print(len(news.data)) #18846
print(news.target.shape) #(18846,)
print(len(news.target_names)) #20
print(len(news.filenames)) #18846

本地csv数据

创建csv文件

方式1:打开计事本,写出如下数据,数据之间使用英文下的逗号, 保存文件后把后缀名改为csv

csv文件可以使用excel打开

方式2:创建excel 文件, 填写数据,以csv为后缀保存文件.

pandas加载csv

使用pandas的read_csv(“文件路径”)函数可以加载csv文件,得到的结果为数据的DataFrame形式

语法:

pd.read_csv("./src/ss.csv")

数据集的划分

(1) 函数

sklearn.model_selection.train_test_split(*arrays,**options)
参数
(1) *array 
    这里用于接收1到多个"列表、numpy数组、稀疏矩阵或padas中的DataFrame"。    
(2) **options, 重要的关键字参数有:
         test_size 值为0.0到1.0的小数,表示划分后测试集占的比例
        random_state 值为任意整数,表示随机种子,使用相同的随机种子对相同的数据集多次划分结果是相同的。否则多半不同 
2 返回值说明
    返回值为列表list, 列表长度与形参array接收到的参数数量相关联, 形参array接收到的是什么类型,list中对应被划分出来的两部分就是什么类型

(2)示例

列表数据集划分

因为随机种子都使用了相同的整数(22),所以划分的划分的情况是相同的。

示例:

from sklearn.model_selection import train_test_split
data1 = [1,2,3,4,5]
data2 = ['1a','2a','3a','4a','5a']
a,b = train_test_split(data1,train_size=0.8,random_state=22)
print(a,b)

a,b = train_test_split(data2,train_size=0.8,random_state=22)
print(a,b)

x_train,x_test,y_train,y_test = train_test_split(data1,data2,train_size=0.8,random_state=22)
print(x_train,x_test)
print(y_train,y_test)

当train_test_split函数参数传入两个data时,会将两个data,按照二八分,分割的值也是对应起来的,如,data1和data2中,1对应1a,2对应2a,分割后,也是相对应得

ndarray数据集划分

划分前和划分后的数据类型是相同的 data1为list,划分后的a、b也是list data2为ndarray,划分后的c、d也是ndarray

from sklearn.model_selection import train_test_split
import numpy as np
data1 = [1,2,3,4,5]
data2 = np.array(['1a','2a','3a','4a','5a'])
x_train,x_test,y_train,y_test = train_test_split(data1,data2,train_size=0.8,random_state=22)
print(x_train,x_test)
print(y_train,y_test)
print(type(x_train),type(x_test),type(y_train),type(y_test))

二维数组数据集划分

train_test_split只划分第一维度,第二维度保持不变

from sklearn.model_selection import train_test_split
import numpy as np
data1 = np.arange(1,16,1)
data1.shape = (5,3)
print(data1)
x_train,x_test = train_test_split(data1,train_size=0.8,random_state=22)
print('x_train=\n',x_train)
print('x_test=\n',x_test)

DataFrame数据集划分

可以划分DataFrame, 划分后的两部分还是DataFrame

from sklearn.model_selection import train_test_split
import numpy as np
import pandas as pd
data1 = np.arange(1,16,1).reshape(5,3)
data1 = pd.DataFrame(data1,index=[1,2,3,4,5],columns=['one','two','three'])
print(data1)

x_train,x_test = train_test_split(data1,train_size=0.8,random_state=22)
print(x_train)
print(x_test)

字典数据集划分

可以划分非稀疏矩阵

用于将字典列表转换为特征向量。这个转换器主要用于处理类别数据和数值数据的混合型数据集

1.对于类别特征DictVectorizer 会为每个不同的类别创建一个新的二进制特征,如果原始数据中的某个样本具有该类别,则对应的二进制特征值为1,否则为0。

2.对于数值特征保持不变,直接作为特征的一部分

示例:

from sklearn.feature_extraction import DictVectorizer
data = [{'city':'成都', 'age':30, 'temperature':20}, 
        {'city':'重庆','age':33, 'temperature':60}, 
        {'city':'北京', 'age':42, 'temperature':80},
        {'city':'上海', 'age':22, 'temperature':70},
        {'city':'成都', 'age':72, 'temperature':40},
       ]
model = DictVectorizer(sparse=False)#sparse=False表示返回一个完整的矩阵,sparse=True表示返回一个稀疏矩阵
data1 = model.fit_transform(data)#提取特征
print('data:\n',data1)

x_train,x_test = train_test_split(data1,train_size=0.8,random_state=22)
print('x_train:\n',x_train)
print('x_test:\n',x_train)

print(type(x_train),type(x_test))

鸢尾花数据集划分
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
iris = load_iris()
list = train_test_split(iris.data,iris.target,train_size=0.8,random_state=22)
x_train,x_test,y_train,y_test = list
print(x_train.shape,x_test.shape,y_train.shape,y_test.shape)

现实世界数据集划分
from sklearn.model_selection import train_test_split
from sklearn.datasets import fetch_20newsgroups
import numpy as np
news = fetch_20newsgroups(data_home='./src',subset='all')
list = train_test_split(news.data,news.target,train_size=0.8,random_state=22)
x_train,x_test,y_train,y_test = list
print(len(x_train), len(x_test), y_train.shape, y_test.shape)


http://www.kler.cn/a/389718.html

相关文章:

  • android dvr黑屏
  • 24/11/12 算法笔记<强化学习> Policy Gradient策略梯度
  • Android 配置默认输入法
  • AI 扩展开发者思维方式:以 SQL 查询优化为例
  • 机器学习基础02_特征工程
  • 软件测试项目实战
  • 基于springboot+小程序的鲜花管理系统(鲜花1)
  • 小马识途营销顾问谈百科词条建立的注意事项
  • 网络安全:构建坚固的数字堡垒
  • 【C++ 算法进阶】算法提升十三
  • HCIP小型园区网拓扑实验
  • Java基础Day-Seventeen
  • 【算法一周目】双指针(1)
  • Android Auto 不再用于旧手机
  • HTML5:网页开发的新纪元
  • 埃隆·马斯克的 AI 初创公司 xAI 推出了 API
  • 链式结构二叉树
  • css 实现展开合并按钮
  • 【JavaScript】JavaScript开篇基础(5)
  • 每日一题|3258. 统计满足 K 约束的子字符串数量 I|滑动窗口
  • 手写JDK动态代理实现AOP
  • c# 开发web服务 webserver
  • MFC 重写了listControl类(类名为A),并把双击事件的处理函数定义在A中,主窗口如何接收表格是否被双击
  • sql速度优化多条合并为一条语句
  • 关于git使用的图文教程(包括基本使用,处理冲突问题等等)超详细
  • 调整TCP参数, 优化网络性能