机器学习0

2019-03-10  本文已影响0人  Aptitude

1. 数据集

#sklearn中的数据集API介绍
#sklearn.datasets
#获取小规模数据集,数据包含在datasets中
datasets.load_*()
获取大规模数据集,需要从网络上下载,函数的第一个参数是data_home,表示数据集下载的目录,默认是 ~/scikit_learn_data/
datasets.fetch_*(data_home=None)
#上述返回的数据类型是datasets.base.Bunch(字典格式)

load和fetch返回的数据类型datasets.base.Bunch(字典格式)

from sklearn.datasets import load_iris
li = load_iris()
print(li.data)  #获取特征值
print('**'*100)
print(li.target) #获取目标值
print(li.DESCR)
print(li.feature_names)
print(li.target_names)

1.1 数据集的分割

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
li = load_iris()
#参数:数据集的特征值,目标值,测试集的大小
#注意返回值,训练集train x_train,y_train,测试集test x_test,y_test
x_train,x_test,y_train,y_test = train_test_split(li.data,li.target,test_size=0.25)
print('训练集特征值和目标值',x_train,y_train)
print('测试集特征值和目标值',x_test,y_test)

用于分类的大数据集

from sklearn.datasets import load_iris,fetch_20newsgroups
from sklearn.model_selection import train_test_split
news = fetch_20newsgroups(subset='all')
print(news.data)
print(news.target)

1.2 转换器与估计器

from sklearn.preprocessing import StandardScaler
s = StandardScaler()
#原数据的平均值和标准差转换原数据
data = s.fit_transform([[1,2,3],[4,5,6]])
#依据每一列的平均值和标准差
data1 = s.fit([[1,2,3],[4,5,6],[7,8,9]])
#以上述的平均值和标准差进行转换,进行归一化处理
data1 = s.transform([[2,2,3],[7,5,6]])
print(data1)
print(data)

估计器:在sklearn中,估计器(estimator)是一个重要的角色,分类器和回归器都属于estimator,是一类实现了算法的API。

首先输入训练数据,然后预测测试数据,然后显示准确率。


估计器工作流程(图源黑马程序员)

sklearn.neighbors k-近邻算法

sklearn.naive_bayes 贝叶斯

sklearn.linear_model.LogisticRegression 逻辑回归

sklearn.linear_model.LinearRegression 线性回归

sklearn.linear_model.Ridge 岭回归

2. KNN算法

定义:如果一个样本在特征空间中的K个最相似(即特征空间中最邻近)的样本中的大多数的大多数属于某一个类别,则该样本也属于这个类别。

注:需要做标准化处理,K的取值很重要。

两个样本之间的距离采用欧式距离进行计算,若a(a_1,a_2,a_3),b(b_1,b_2,b_3)
\sqrt{{(a_1-b1)}^2+{(a_2-b_2)}^2+{(a_3-b_3)}^2}

实例处理:

from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
import pandas as pd
from sklearn.preprocessing import StandardScaler
#K近邻算法预测用户签到位置
def knncls():
#读取数据
    data = pd.read_csv("train.cav")
    print(data.head(10))
    #数据处理,
    # 1. 缩小数据,query()可进行数据的查询筛选
    data = data.query("x>1.0 & x<1.25 & y>2.5 &y<2.75")
    # 2. 处理时间
    time_value = pd.to_datetime(data('time'),unit = 's')
    #把日期格式转换成字典形式
    time_value = pd.DatetimeIndex(time_value)
    #构造一些新特征
    data['day'] = time_value.day
    data['hour'] = time_value.hour
    data['weekday'] = time_value.weekday
    #删除时间特征
    data.drop(['time'],axis = 1)  #sklearn中列为0,pandas中列为1
    #把签到数量少于n个的目标位置删除
    place_count = data.groupby('place_id').count()
    #reset_index()是还原索引,从新变为默认的整型索引,这里是指将place_id重新变为特征
    tf = place_count[place_count.row_id >3].reset_index()
    data = data[data['place_id'].isin(tf.place_id)]
    #取出数据中的特征值和目标值
    y = data['place_id']
    x = data.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 = KNeighborsClassifier(n_neighbors=5)
    #输入数据
    knn.fit(x_train,y_train)
    #训练数据
    #预测测试集
    y_predict = knn.predict(x_test)
    #得到准确率
    result = knn.score(y_test,y_predict)
    print('预测的准确率',result)
    return None

if __name__ =='__main__':
    knncls()

KNN总结:

。。。。。。

上一篇下一篇

猜你喜欢

热点阅读