sklearn 学习实践之——基于自带数据集(波士顿房价、鸢尾花、糖尿病等)构建分类、回归模型

      只要是接触机器学习的,很少有没听过sklearn的,这个真的可以称得上是机器学习快速进行的神器了,在研究生的时候搭建常用的机器学习模型用的就是sklearn,今天应部门的一些需求,简单的总结了一点使用方法,后面还会继续更新,今天仅使用sklearn自带的数据集来实践一下分类和回归模型,比较简单就不再进行解释了,主要是看一下sklearn自身有哪些数据集可以很方便地去使用,下面是具体的实践:

#!usr/bin/env python
#encoding:utf-8


'''
__Author__:沂水寒城
功能:sklearn 数据集探索 
sklearn自动了下面几种数据用于算法练习。
load_boston([return_X_y]) 加载波士顿房价数据;用于回归问题
load_iris([return_X_y]) 加载iris 数据集;用于分类问题
load_diabetes([return_X_y]) 加载糖尿病数据集;用于回归问题
load_digits([n_class, return_X_y]) 加载手写字符集;用于分类问题
load_linnerud([return_X_y]) 加载linnerud 数据集;用于多元回归问题
'''


import sys
reload(sys)
sys.setdefaultencoding('utf-8')
#加载各种数据集
from sklearn.datasets import load_iris
from sklearn.datasets import load_boston
from sklearn.datasets import load_diabetes
from sklearn.datasets import load_linnerud
#加载模型
from sklearn import svm
from sklearn import linear_model
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression,LinearRegression


def split_data(data_list, y_list, ratio=0.30):
    '''
    按照指定的比例,划分样本数据集
    ratio: 测试数据的比率
    '''
    X_train, X_test, y_train, y_test = train_test_split(data_list, y_list, test_size=ratio, random_state=42)
    print '--------------------------------data shape-----------------------------------'
    print len(X_train), len(y_train)
    print len(X_test), len(y_test)
    return X_train, X_test, y_train, y_test


def regressionModels():
    '''
    回归模型使用
    '''
    #波士顿房价数据
    boston=load_boston()
    data=boston.data
    target=boston.target
    print data.shape
    print target.shape
    X_train, X_test, y_train, y_test=split_data(data,target)
    model=LinearRegression()
    model.fit(X_train,y_train)
    print u"系数矩阵:"
    print model.coef_.tolist()
    print u"截距"
    print model.intercept_ 
    print '-----------------------------------------------------------------'
    # 糖尿病数据集
    diabetes=load_diabetes()
    data=diabetes.data
    target=diabetes.target
    print data.shape
    print target.shape
    X_train, X_test, y_train, y_test=split_data(data,target)
    model=LinearRegression()
    model.fit(X_train,y_train)
    print u"系数矩阵:"
    print model.coef_.tolist()
    print u"截距"
    print model.intercept_
    print '-----------------------------------------------------------------'
    linnerud=load_linnerud()
    data=linnerud.data
    target=linnerud.target
    print data.shape
    print target.shape
    X_train, X_test, y_train, y_test=split_data(data,target)
    model=LinearRegression()
    model.fit(X_train,y_train)
    print u"系数矩阵:"
    print model.coef_.tolist()
    print u"截距"
    print model.intercept_

    

def classificationModels():
    '''
    分类模型使用
    '''
    #鸢尾花数据集
    iris=load_iris()
    data=iris.data
    target=iris.target
    print data.shape
    print target.shape
    X_train, X_test, y_train, y_test=split_data(data,target)
    model=svm.SVC()
    model.fit(data,target)
    y_predict=model.predict(X_test)
    print "Accuracy:"
    print accuracy_score(y_test,y_predict)


if __name__=='__main__':
    regressionModels()
    classificationModels()

        上述代码在python2.7环境下测试通过,下面是结果输出:

#回归结果输出
(506L, 13L)
(506L,)
--------------------------------data shape-----------------------------------
354 354
152 152
系数矩阵:
[-0.13347010285294442, 0.03580891359322994, 0.04952264522005112, 3.119835116285431, -15.417060895306475, 4.057199231645387, -0.010820835184929944, -1.3859982431608757, 0.24272733982224273, -0.008702234365661983, -0.9106852081102892, 0.011794115892572796, -0.547113312823961]
截距
31.63108403569312
-----------------------------------------------------------------
(442L, 10L)
(442L,)
--------------------------------data shape-----------------------------------
309 309
133 133
系数矩阵:
[29.250345824146294, -261.70768052669956, 546.2973726341081, 388.4007725749296, -901.9533870552892, 506.76114900102954, 121.14845947917183, 288.0293249509, 659.2713384575223, 41.375369011084985]
截距
151.00818273080338
-----------------------------------------------------------------
(20L, 3L)
(20L, 3L)
--------------------------------data shape-----------------------------------
14 14
6 6
系数矩阵:
[[0.30287324212545036, -0.37960681782019234, 0.16074123821975367], [-0.09726556450063326, -0.047093687917992795, 0.027083148889626204], [-0.5869461483881073, 0.053272106843233316, -0.004283316055441206]]
截距



#分类结果输出
[213.69337737  41.05782266  54.38303224]
(150L, 4L)
(150L,)
--------------------------------data shape-----------------------------------
105 105
45 45
Accuracy:
1.0

        欢迎交流学习!

猜你喜欢

转载自blog.csdn.net/Together_CZ/article/details/84524088