机器学习二(学习笔记) sklearn数据集及K近邻算法(转)

本文介绍了机器学习中的sklearn数据集的获取与使用,包括小数据集、大数据集和本地数据生成。同时,详细探讨了有监督学习与无监督学习的区别。重点讲解了sklearn中的K-近邻算法,包括其工作原理、优缺点以及如何在sklearn中使用。通过GridSearchCV进行了参数调优的示例。
摘要由CSDN通过智能技术生成

机器学习应用程序的步骤

(1)收集数据

我们可以使用很多方法收集样本护具,如:

公司自有数据

制作网络爬虫从网站上抽取数据、

第三方购买的数据

合作机构提供的数据

从RSS反馈或者API中得到信息、设备发送过来的实测数据。

(2)准备输入数据

得到数据之后,还必须确保数据格式符合要求。

(3)分析输入数据

这一步的主要作用是确保数据集中没有垃圾数据。如果是使用信任的数据来源,那么可以直接跳过这个步骤

(4)训练算法

机器学习算法从这一步才真正开始学习。如果使用无监督学习算法,由于不存在目标变量值,故而也不需要训练算法,所有与算法相关的内容在第(5)步

(5)测试算法

这一步将实际使用第(4)步机器学习得到的知识信息。当然在这也需要评估结果的准确率,然后根据需要重新训练你的算法

(6)使用算法

转化为应用程序,执行实际任务。以检验上述步骤是否可以在实际环境中正常工作。如果碰到新的数据问题,同样需要重复执行上述的步骤

一、sklearn数据集

1、sklearn中的练习数据集

1.1、datasets.load_()

获取小规模数据集,数据包含在datasets里

#小数据集 
#波士顿房价数据集        load_boston       回归            数据量:50613 
#鸢尾花数据集           load_iris         分类            数据量:1504 
#糖尿病数据集           load_diabetes     回归            数据量: 4210 
#手写数字数据集         load_digits       分类            数据量:562064 
..........
datasets.load_boston([return_X_y])	加载并返回波士顿房价数据集(回归)。
datasets.load_breast_cancer([return_X_y])加载并返回乳腺癌威斯康星数据集(分类)。
datasets.load_diabetes([return_X_y])加载并返回糖尿病数据集(回归)。
datasets.load_digits([n_class,return_X_y])	加载并返回数字数据集(分类)。
datasets.load_files(container_path [...])加载带有类别的文本文件作为子文件夹名称。
datasets.load_iris([return_X_y])	加载并返回虹膜数据集(分类)。
datasets.load_linnerud([return_X_y])	加载并返回linnerud数据集(多元回归)。
datasets.load_sample_image(IMAGE_NAME)	加载单个样本图像的numpy数组
datasets.load_sample_images()	加载样本图像以进行图像处理。
datasets.load_svmlight_file(f [,n_features,...])将svmlight / libsvm格式的数据集加载到稀疏CSR矩阵中
datasets.load_svmlight_files(文件[...])	以SVMlight格式从多个文件加载数据集
datasets.load_wine([return_X_y])	加载并返回葡萄酒数据集(分类)。

1.2datasets.fetch_()

获取大规模数据集,需要从网络上下载,函数的第一个参数是data_home,表示数据集下载的目录,默认是 ~/scikit_learn_data/,要修改默认目录,可以修改环境变量SCIKIT_LEARN_DATA

数据集目录可以通过datasets.get_data_home()获取,clear_data_home(data_home=None)删除所有下载数据

#大数据集 
#Olivetti 脸部图像数据集       fetch_olivetti_faces      降维            
#新闻分类数据集                fetch_20newsgroups        分类
#带标签的人脸数据集             fetch_lfw_people          分类;降维 -
#加州房价数据					fetch_california_housing    回归
........

1.3datasets.make_()

2、sklearn中数据集的属性

load*和 fetch 函数返回的数据类型是 datasets.base.Bunch,本质上是一个 dict,它的键值对可用通过对象的属性方式访问。主要包含以下属性:*

  • data:特征数据数组,是 n_samples ,n_features 的二维 numpy.ndarray 数组
  • target:标签数组,是 n_samples 的一维 numpy.ndarray 数组
  • DESCR:数据描述
  • feature_names:特征名
  • target_names:标签名

3、获取小数据集

def get_data1():
    #数据集获取(糖尿病数据集)  #回归数据
    li = load_diabetes()
    #获取特征数据
    print(li.data)
    #获取目标值
    print(li.target)
    #获取描述信息
    print(li.DESCR)
    
    
 def get_data2():
    #数据集获取(糖尿病数据集)  #分类数据
    li = load_iris()
    #获取特征数据
    print(li.data)
    #获取目标值
    print(li.target)
    #获取描述信息
    print(li.DESCR)
    

4、获取大数据集

def get_news():
    # 获取分类数据(新闻)
    news = fetch_20newsgroups(subset='all')
    print(news.DESCR)
    print(len(news.data))
    
#可选参数:

#subset: 'train'或者'test','all',可选,选择要加载的数据集:训练集的“训练”,测试集的“测试”,两者的“全部”,具有洗牌顺序

#data_home: 可选,默认值:无,指定数据集的下载和缓存文件夹。如果没有,所有scikit学习数据都存储在'〜/ scikit_learn_data'子文件夹中

#categories: 无或字符串或Unicode的集合,如果没有(默认),加载所有类别。如果不是无,要加载的类别名称列表(忽略其他类别)

#shuffle: 是否对数据进行洗牌

#random_state: numpy随机数生成器或种子整数

#download_if_missing: 可选,默认为True,如果False,如果数据不在本地可用而不是尝试从源站点下载数据,则引发IOError

5、获取本地生成数据

参考链接:数据科学学习手札21)sklearn.datasets常用功能详解

1、生成本地分类数据:
  • sklearn.datasets.make_classification
  • make_multilabel_classification
主要参数
"""
生成用于分类的数据集

:param n_samples:int,optional(default = 100),样本数量

:param n_features:int,可选(默认= 20),特征总数

:param n_classes:int,可选(default = 2),类(或标签)的分类问题的数量

:param random_state:int,RandomState实例或无,可选(默认=无)

返回值
:return :X,特征数据集;y,目标分类值
"""

案列

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets.samples_generator import make_classification
# X1为样本特征,Y1为样本类别输出, 共400个样本,每个样本2个特征,输出有3个类别,没有冗余特征,每个类别一个簇
X1, Y1 = make_classification(n_samples=400, n_features=2, n_redundant=0,
                             n_clusters_per_class=1, n_classes=3)
plt.scatter(X1[:, 0], X1[:, 1], marker='o', c=Y1)
plt.show()

分类数据

2、生成本地回归模型数据:
  • sklearn.datasets.make_regression
  """
  生成用于回归的数据集

  :param n_samples:int,optional(default = 100),样本数量

  :param  n_features:int,optional(default = 100),特征数量

  :param  coef:boolean,optional(default = False),如果为True,则返回底层线性模型的系数

  :param random_state:随机数生成器使用的种子;
  
  :return :X,特征数据集;y,目标值
  """
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets.samples_generator import make_regression
# X为样本特征,y为样本输出, coef为回归系数(Y/X),共1000个样本,每个样本1个特征(特征过多时需要降维处理)
X, y, coef =make_regression(n_samples=1000, n_features=1,noise=10, coef=True)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值