《机器学习及其实践》学习笔记(四)

本文详细介绍机器学习中数据预处理的关键步骤,包括数据提取、处理、分割及特征选择等,帮助读者理解如何准备高质量的数据集。

说明: 一本篇文章主要总结每一种分类学习所使用到的函数,并分析这些函数适合的情况。另外简单总结一下分类学习的各个步骤。

一.提取数据:

   提取的数据从《机器学习机器实践》种只有三种种情况,第一种就是从网络上下载数据,如:泰坦尼克号乘客信息。第二种就是从sklearn.datasets导出数据,如:手写体(load_digits)以及(Iris)数据集。第三种情况通过导入新闻抓取器,抓取新闻。

#读取Iris数据集细节资料
#从sklearn.datasets导入iris数据加载器
from sklearn.datasets import load_iris
#使用加载器读取数据并且存入变量iris
iris=load_iris()
#查验数据规模
iris.data.shape

 

#导入pandas,并且重命名为pd
import pandas as pd
#通过互联网读取泰坦尼克号乘客档案,并且存储在Bain两titanic种
titanic=pd.read_csv('http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt')
#观察前几行数据
titanic.head()
#从sklearn.datasets里导入新闻抓取器fetch_20newsgroups
from sklearn.datasets import fetch_20newsgroups
#与之前预存的数据不同,fectch_20newsgroups需要即时从互联网上下载数据
news=fetch_20newsgroups(subset='all')
#查验数据规模和细节
print len(news.data)
print news.data[0]

当然在收集到数据之后,最好是查看一下数据的规模和细节。

二:简单处理原始数据:

下载的数据很多时候会出现数据的丢失,使原始数据不够完整,所以我们在处理数据的时候要么把不完整的那一条数据直接删除,要么把丢失的数据补充完整。下面用良/恶性乳腺肿瘤实验和泰坦尼克号实验,简单介绍如何处理原始数据。

v# 导入pandas与numpy工具包。
import pandas as pd
import numpy as np

# 创建特征列表。
column_names = ['Sample code number', 'Clump Thickness', 'Uniformity of Cell Size', 'Uniformity of Cell Shape', 'Marginal Adhesion', 'Single Epithelial Cell Size', 'Bare Nuclei', 'Bland Chromatin', 'Normal Nucleoli', 'Mitoses', 'Class']

# 使用pandas.read_csv函数从互联网读取指定数据。
data = pd.read_csv("breast-cancer-wisconsin.txt", names = column_names )

# 将?替换为标准缺失值表示。
data = data.replace(to_replace='?', value=np.nan)

# 丢弃带有缺失值的数据(只要有一个维度有缺失)。
data = data.dropna(how='any')

# 输出data的数据量和维度。
# print(data.shape)
#导入pandas用于数据分析
import pandas  as pd
#利用pandas的read_csv模块直接从互联网手机泰坦尼克号乘客数据
titanic =pd.read_csv('http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt')
#观察钱纪旱数据,可以发现,数据种类各异,数值型、类别型,甚至还有缺失数据
titanic.head()
#使用pandas,数据都转入pandas独有的dataframe格式(二维数据表格),直接实用info(),查看数据的统计特性
X=titanic[['pclass','age','sex']]
titanic.info()
X['age'].fillna(X['age'].mean(),inplace=True)

三:分割数据集:

把数据分成两部分,一部分用作训练模型(X_train),另外一部分用作测试(X_test)。其中test_size是用来表示训练集和测试集所占比例,y用来标识X_train。

from sklearn.cross_validation import train_test_split
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.25,random_state=33)

四:特征数据:

模型对于输入的数据也需要处理。处理方式包括直接标准化,文本向量特征转化,还有就是选取一些对结果影响很大属性。

#标准化数据,保证每个维度的特征数据方差为1,均值为0。使得预测结果不会被某些维度过大的特征值而主导
ss=StandardScaler()
X_train=ss.fit_transform(X_train)
X_test=ss.transform(X_train)
#从sklearn.feature_extraction里导入用于文本特征向量转化模块。
from sklearn.feature_extraction.text import CountVectorizer
vec=CountVectorizer()
X_train=vec.fit_transform(x_train)
X_test=vec.transform(test)
X=titanic[['pclass','age','sex']]
y=titanic['survived']
#对当前选择的特征进行探查
X.info
X['age'].fillna(X['age'].mean(),inplace=True)
#使用scikit-learn.feature_extraction中的特征转换器
from sklearn.feature_extraction import DictVectorizer
vec=DictVectorizer(sparse=False)
#转换特征后,我们发现凡是类别型的特征都单独剥离出来,独成一列特征,数值型则保持不变。
print (vec.feature_names_)

五:实验

实验部分就是选定模型,然后用X_train训练模型,之后就直接用训练的模型对测试集进行测试。等实验做完了之后,就可以哟个自身的评分函数进行评分,也可以查召回率等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值