Python机器学习-分类「建议收藏」

Python机器学习-分类「建议收藏」监督学习下的分类模型,主要运用sklearn实践kNN分类器kNN分类器决策树决策树朴素贝叶斯朴素贝叶斯实战一:预测股市涨跌实战一:预测股市涨跌实战二:通过运动传感器采集的数据分析运

大家好,又见面了,我是你们的朋友全栈君。

  • 监督学习下的分类模型,主要运用sklearn实践
  • kNN分类器

Python机器学习-分类「建议收藏」

Python机器学习-分类「建议收藏」

Python机器学习-分类「建议收藏」

 

Python机器学习-分类「建议收藏」

  • 决策树

Python机器学习-分类「建议收藏」

Python机器学习-分类「建议收藏」

Python机器学习-分类「建议收藏」

  • 朴素贝叶斯

Python机器学习-分类「建议收藏」

Python机器学习-分类「建议收藏」

Python机器学习-分类「建议收藏」

Python机器学习-分类「建议收藏」

 Python机器学习-分类「建议收藏」

 

  •  实战一:预测股市涨跌

# -*- coding: utf-8 -*-
"""
Created on Mon Aug 28 15:42:55 2017

@author: Administrator
"""

# unit4 classify

#数据介绍:
#网易财经上获得的上证指数的历史数据,爬取了20年的上证指数数据。
#实验目的:
#根据给出当前时间前150天的历史数据,预测当天上证指数的涨跌。

import pandas as pd
import numpy as np
from sklearn import svm
from sklearn import cross_validation

fpath='F:\RANJIEWEN\MachineLearning\Python机器学习实战_mooc\data\classify\stock\\000777.csv'

data=pd.read_csv(fpath,encoding='gbk',parse_dates=[0],index_col=0)
data.sort_index(0,ascending=True,inplace=True)

dayfeature=150
featurenum=5*dayfeature
x=np.zeros((data.shape[0]-dayfeature,featurenum+1))
y=np.zeros((data.shape[0]-dayfeature))

for i in range(0,data.shape[0]-dayfeature):
    x[i,0:featurenum]=np.array(data[i:i+dayfeature] \
          [[u'收盘价',u'最高价',u'最低价',u'开盘价',u'成交量']]).reshape((1,featurenum))
    x[i,featurenum]=data.ix[i+dayfeature][u'开盘价']
 
for i in range(0,data.shape[0]-dayfeature):
    if data.ix[i+dayfeature][u'收盘价']>=data.ix[i+dayfeature][u'开盘价']:
        y[i]=1
    else:
        y[i]=0          
 
clf=svm.SVC(kernel='rbf')
result = []
for i in range(5):
    x_train, x_test, y_train, y_test = \
                cross_validation.train_test_split(x, y, test_size = 0.2)
    clf.fit(x_train, y_train)
    result.append(np.mean(y_test == clf.predict(x_test)))
print("svm classifier accuacy:")
print(result)
  • 实战二:通过运动传感器采集的数据分析运行状态

# -*- coding: utf-8 -*-
"""
Created on Mon Aug 28 19:41:21 2017

@author: Administrator
"""

'''
现在收集了来自 A,B,C,D,E 5位用户的可穿戴设备上的传感器数据,
每位用户的数据集包含一个特征文件(a.feature)和一个标签文件
(a.label)
特征文件中每一行对应一个时刻的所有传感器数值,标签文件中每行记录了
和特征文件中对应时刻的标记过的用户姿态,两个文件的行数相同,相同行
之间互相对应
标签文件内容如图所示,每一行代表与特征文件中对应行的用户姿态类别。
总共有0-24共25种身体姿态,如,无活动状态,坐态、跑态等。标签文件作为
训练集的标准参考准则,可以进行特征的监督学习。

假设现在出现了一个新用户,但我们只有传感器采集的数据,那么该如何得到
这个新用户的姿态呢?
或者对同一用户如果传感器采集了新的数据,怎么样根据新的数据判断当前
用户处于什么样的姿态呢?
'''

import pandas as pd
import numpy as np

from sklearn.preprocessing import Imputer
from sklearn.cross_validation import train_test_split
from sklearn.metrics import classification_report

from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.naive_bayes import GaussianNB

def load_datasets(feature_paths,label_paths):
    feature=np.ndarray(shape=(0,41))
    label=np.ndarray(shape=(0,1))
    for file in feature_paths:
        df=pd.read_table(file,delimiter=',',na_values='?',header=None)
        imp=Imputer(missing_values='NaN',strategy='mean',axis=0)
        imp.fit(df)
        df=imp.transform(df)
        feature=np.concatenate((feature,df))
        
    for file in label_paths:
        df=pd.read_table(file,header=None)
        label=np.concatenate((label,df))
    
    label=np.ravel(label)
    return feature,label
        
if __name__ == '__main__':
    ''' 数据路径 '''
    fpath='F:/RANJIEWEN/MachineLearning/Python机器学习实战_mooc/data/classify/dataset/'
    featurePaths = [fpath+'A/A.feature',fpath+'B/B.feature',fpath+'C/C.feature',fpath+'D/D.feature',fpath+'E/E.feature']
    labelPaths = [fpath+'A/A.label',fpath+'B/B.label',fpath+'C/C.label',fpath+'D/D.label',fpath+'E/E.label']
    ''' 读入数据  '''
    x_train,y_train = load_datasets(featurePaths[:4],labelPaths[:4])
    x_test,y_test = load_datasets(featurePaths[4:],labelPaths[4:])
    x_train, x_, y_train, y_ = train_test_split(x_train, y_train, test_size = 0.0)
     
    print('Start training knn')
    knn = KNeighborsClassifier().fit(x_train, y_train)
    print('Training done')
    answer_knn = knn.predict(x_test)
    print('Prediction done')
     
    print('Start training DT')
    dt = DecisionTreeClassifier().fit(x_train, y_train)
    print('Training done')
    answer_dt = dt.predict(x_test)
    print('Prediction done')
     
    print('Start training Bayes')
    gnb = GaussianNB().fit(x_train, y_train)
    print('Training done')
    answer_gnb = gnb.predict(x_test)
    print('Prediction done')
     
    print('\n\nThe classification report for knn:')
    print(classification_report(y_test, answer_knn))
    print('\n\nThe classification report for DT:')
    print(classification_report(y_test, answer_dt))
    print('\n\nThe classification report for Bayes:')
    print(classification_report(y_test, answer_gnb))
  • result

Python机器学习-分类「建议收藏」

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/156059.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 浅析ASP.NET的IIS映射

    浅析ASP.NET的IIS映射

    2021年8月6日
    70
  • 【Ubuntu 】Ubuntu 更换国内源—解决终端下载错误或速度慢的问题「建议收藏」

    【Ubuntu 】Ubuntu 更换国内源—解决终端下载错误或速度慢的问题「建议收藏」前言:安装好ubuntu双系统后,默认的软件更新源是国外的,在国内使用速度很慢,用”aptinstallxxx”安装软件时可能出现”网络不可达”、”你的网络需要认证吗”、”无法定位软件包”等错误,所以我们需要更换成国内的源,这样才能正常安装和更新软件。目录一、ubuntu16.04更换国内源二、ubuntu18.04更换国内源三、UbuntuROS更换国内源

    2022年5月14日
    48
  • 某音信息案例_关于信息泄露的案例

    某音信息案例_关于信息泄露的案例抓包。抓到了一个share_url我访问过去看了下,https://www.iesdouyin.com/share/user/102064772608有数据的。那就拿数据。然后发现它的数字做了字符集映射。搞他。下载.ttf的文件,s3a.bytecdn.cn/ies/resource/falcon/douyin_falcon/static/font/iconfont_da2e2…

    2022年9月26日
    2
  • 【撸网站第一天】开篇

    【撸网站第一天】开篇今天准备撸一个网站,主要撸一下他的技术点,包括:前端、结构、后端、压力测试等等。现介绍一下这个网站:http://xingship.com测试下来,这个网站貌似只能在手机上使用,我在pc上显示的效果并不是很好,不知道站长是否可以兼容一下pc端。如下效果:很丑,但是当我跑到手机上来看的时候,还像那么回事。网站呢,主要是电影短视频的介绍。开始我以为这个是网站的布局是这一个标准的网格布局,但是其实他是个瀑布模式。第二篇,我们来详细介绍这个,好啦,今天由于时间关系,就现记录到这..

    2022年8月31日
    2
  • C语言中动态分配数组

    C语言中动态分配数组很多人在编写C语言代码的时候很少使用动态数组,不管什么情况下通通使用静态数组的方法来解决,在当初学习C语言的时候我就是一个典型的例子,但是现在发现这是一个相当不好的习惯,甚至可能导致编写的程序出现一些致命的错误。尤其对于搞嵌入式的人来所,嵌入式系统的内存是宝贵的,内存是否高效率的使用往往意味着嵌入式设备是否高质量和高性能,所以高效的使用内存对我们来说是很重要的。那么我们在自己编写C语言代码的时候就…

    2022年7月22日
    8
  • SOP解釋與說明

    SOP解釋與說明       所谓SOP,是StandardOperationProcedure三个单词中首字母的大写,即标准作业程序,就是将某一事件的标准操作步骤和要求以统一的格式描述出来,用来指导和规范日常的工作.SOP的精髓,就是将细节进行量化,用更通俗的话来说,SOP就是对某一程序中的关键控制点进行细化和量化.  从对SOP的上述基本界定来看,SOP具有以下一些内在的特征:  S

    2022年5月26日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号