精华内容
下载资源
问答
  • 最强数据集集合:50个最佳机器学习公共数据集   https://mp.weixin.qq.com/s/_A71fTgwSyaW5XTAySIGOA   原作 mlmemoirs 郭一璞 编译 量子位 报道 | 公众号 QbitAI 外国自媒体mlmemoirs根据github、福布斯、...

    最强数据集集合:50个最佳机器学习公共数据集

     

    https://mp.weixin.qq.com/s/_A71fTgwSyaW5XTAySIGOA

     

    原作 mlmemoirs 
    郭一璞 编译 
    量子位 报道 | 公众号 QbitAI

    外国自媒体mlmemoirs根据github、福布斯、CMU官网等信息,整理了一张50个最佳机器学习公共数据集的榜单,为大家分享一下~

    提前说两个须知:

    寻找数据集の奥义

    根据CMU的说法,寻找一个好用的数据集需要注意一下几点:

    数据集不混乱,否则要花费大量时间来清理数据。

    数据集不应包含太多行或列,否则会难以使用。

    数据越干净越好,清理大型数据集可能非常耗时。

    应该预设一个有趣的问题,而这个问题又可以用数据来回答。

    去哪里找数据集

    Kaggle:爱竞赛的盆友们应该很熟悉了,Kaggle上有各种有趣的数据集,拉面评级、篮球数据、甚至西雅图的宠物许可证。
    https://www.kaggle.com/

    UCI机器学习库:最古老的数据集源之一,是寻找有趣数据集的第一站。虽然数据集是用户贡献的,因此具有不同的清洁度,但绝大多数都是干净的,可以直接从UCI机器学习库下载,无需注册。
    http://mlr.cs.umass.edu/ml/

    VisualData:分好类的计算机视觉数据集,可以搜索~
    https://www.visualdata.io/

    好了,下面就是那50个数据集了,由于后期加上了一些补充,所以总数已经超过了50。

     

    机器学习数据集

    图片

    Labelme:带注释的大型图像数据集。
    http://labelme.csail.mit.edu/Release3.0/browserTools/php/dataset.php

    ImageNet:大家熟悉的ImageNet,女神李飞飞参与创建,同名比赛影响整个计算机视觉界。
    http://image-net.org/

    LSUN:场景理解与许多辅助任务(房间布局估计,显着性预测等)
    http://lsun.cs.princeton.edu/2016/

    MS COCO:同样也是知名计算机视觉数据集,同名比赛每年都被中国人屠榜。
    http://mscoco.org/

    COIL 100 :100个不同的物体在360度旋转的每个角度成像。
    http://www1.cs.columbia.edu/CAVE/software/softlib/coil-100.php

    视觉基因组:非常详细的视觉知识库。
    http://visualgenome.org/

    谷歌开放图像:在知识共享下的900万个图像网址集合“已经注释了超过6000个类别的标签”。
    https://research.googleblog.com/2016/09/introducing-open-images-dataset.html

    野外标记面:13000张人脸标记图像,用于开发涉及面部识别的应用程序。
    http://vis-www.cs.umass.edu/lfw/

    斯坦福狗子数据集:20580张狗子的图片,包括120个不同品种。
    http://vision.stanford.edu/aditya86/ImageNetDogs/

    室内场景识别:包含67个室内类别,15620个图像。
    http://web.mit.edu/torralba/www/indoor.html

    情绪分析

    多域情绪分析数据集:一个稍老一点的数据集,用到了来自亚马逊的产品评论。
    http://www.cs.jhu.edu/~mdredze/datasets/sentiment/

    IMDB评论:用于二元情绪分类的数据集,不过也有点老、有点小,有大约25000个电影评论。
    http://ai.stanford.edu/~amaas/data/sentiment/

    斯坦福情绪树库:带有情感注释的标准情绪数据集。
    http://nlp.stanford.edu/sentiment/code.html

    Sentiment140:一个流行的数据集,它使用160,000条预先删除表情符号的推文。
    http://help.sentiment140.com/for-students/

    Twitter美国航空公司情绪:2015年2月美国航空公司的Twitter数据,分类为正面,负面和中性推文。
    https://www.kaggle.com/crowdflower/twitter-airline-sentiment

    自然语言处理

    HotspotQA数据集:具有自然、多跳问题的问答数据集,具有支持事实的强大监督,以实现更易于解释的问答系统。
    https://hotpotqa.github.io/

    安然数据集:来自安然高级管理层的电子邮件数据。
    https://www.cs.cmu.edu/~./enron/

    亚马逊评论:包含18年来亚马逊上的大约3500万条评论,数据包括产品和用户信息,评级和文本审核。
    https://snap.stanford.edu/data/web-Amazon.html

    Google Books Ngrams:Google Books中的一系列文字。
    https://aws.amazon.com/datasets/google-books-ngrams/

    Blogger Corpus:收集了来自blogger.com的681,288篇博文,每篇博文至少包含200个常用英语单词。
    http://u.cs.biu.ac.il/~koppel/BlogCorpus.htm

    维基百科链接数据:维基百科的全文,包含来自400多万篇文章的近19亿个单词,可以按段落、短语或段落本身的一部分进行搜索。
    https://code.google.com/p/wiki-links/downloads/list

    Gutenberg电子书列表:Gutenberg项目中带注释的电子书书单。
    http://www.gutenberg.org/wiki/Gutenberg:Offline_Catalogs

    Hansards加拿大议会文本:来自第36届加拿大议会记录的130万组文本。
    http://www.isi.edu/natural-language/download/hansard/

    Jeopardy:来自问答节目Jeopardy的超过200,000个问题的归档。
    http://www.reddit.com/r/datasets/comments/1uyd0t/200000_jeopardy_questions_in_a_json_file/

    英文垃圾短信收集:由5574条英文垃圾短信组成的数据集。
    http://www.dt.fee.unicamp.br/~tiago/smsspamcollection/

    Yelp评论:Yelp,就是美国的“大众点评”,这是他们发布的一个开放数据集,包含超过500万条评论。
    https://www.yelp.com/dataset

    UCI的Spambase:一个大型垃圾邮件数据集,对垃圾邮件过滤非常有用。
    https://archive.ics.uci.edu/ml/datasets/Spambase

    自动驾驶

    Berkeley DeepDrive BDD100k:目前最大的自动驾驶数据集,包含超过100,000个视频,其中包括一天中不同时段和天气条件下超过1,100小时的驾驶体验。其中带注释的图像来自纽约和旧金山地区。
    http://bdd-data.berkeley.edu/

    百度Apolloscapes:度娘的大型数据集,定义了26种不同物体,如汽车、自行车、行人、建筑物、路灯等。
    http://apolloscape.auto/

    Comma.ai:超过7小时的高速公路驾驶,细节包括汽车的速度、加速度、转向角和GPS坐标。
    https://archive.org/details/comma-dataset

    牛津的机器人汽车:这个数据集来自牛津的机器人汽车,它于一年时间内在英国牛津的同一条路上,反反复复跑了超过100次,捕捉了天气、交通和行人的不同组合,以及建筑和道路工程等长期变化。
    http://robotcar-dataset.robots.ox.ac.uk/

    城市景观数据集:一个大型数据集,记录50个不同城市的城市街景。
    https://www.cityscapes-dataset.com/

    CSSAD数据集:此数据集对于自动驾驶车辆的感知和导航非常有用。不过,数据集严重偏向发达国家的道路。
    http://aplicaciones.cimat.mx/Personal/jbhayet/ccsad-dataset

    KUL比利时交通标志数据集:来自比利时法兰德斯地区数以千计的实体交通标志的超过10000条注释。
    http://www.vision.ee.ethz.ch/~timofter/traffic_signs/

    MIT AGE Lab:在AgeLab收集的1,000多小时多传感器驾驶数据集的样本。
    http://lexfridman.com/automated-synchronization-of-driving-data-video-audio-telemetry-accelerometer/

    LISA:UC圣迭戈智能和安全汽车实验室的数据集,包括交通标志、车辆检测、交通信号灯和轨迹模式。
    http://cvrr.ucsd.edu/LISA/datasets.html

    博世小交通灯数据集:用于深度学习的小型交通灯的数据集。
    https://hci.iwr.uni-heidelberg.de/node/6132

    LaRa交通灯识别:巴黎的交通信号灯数据集。
    http://www.lara.prd.fr/benchmarks/trafficlightsrecognition

    WPI数据集:交通灯、行人和车道检测的数据集。
    http://computing.wpi.edu/dataset.html

    临床

    MIMIC-III:MIT计算生理学实验室的公开数据集,标记了约40000名重症监护患者的健康数据,包括人口统计学、生命体征、实验室测试、药物等维度。
    https://mimic.physionet.org/

    一般数据集

    除了机器学习专用的数据集,还有一些其他的一般数据集,可能很有趣~

    公共政府数据集

    Data.gov:该网站可以从多个美国政府机构下载数据,包括各种奇怪的数据,从政府预算到考试分数都有。不过,其中大部分数据需要进一步研究。
    https://www.data.gov/

    食物环境地图集:本地食材如何影响美国饮食的数据。
    https://catalog.data.gov/dataset/food-environment-atlas-f4a22

    学校财务系统:美国学校财务系统的调查。
    https://catalog.data.gov/dataset/annual-survey-of-school-system-finances

    慢性病数据:美国各地区慢性病指标数据。
    https://catalog.data.gov/dataset/u-s-chronic-disease-indicators-cdi-e50c9

    美国国家教育统计中心:教育机构和教育人口统计数据,不仅有美国的数据,也有一些世界上其他地方的数据。
    https://nces.ed.gov/

    英国数据服务:英国最大的社会、经济和人口数据集。
    https://www.ukdataservice.ac.uk/

    数据美国:全面可视化的美国公共数据。
    http://datausa.io/

    量子位补充一句,我国国家统计局其实也不错。
    http://www.stats.gov.cn/

    金融与经济

    Quandl:经济和金融数据的良好来源,有助于建立预测经济指标或股票价格的模型。
    https://www.quandl.com/

    世界银行开放数据:全球人口统计数据,还有大量经济和发展指标的数据集。
    https://data.worldbank.org/

    国际货币基金组织数据:国际货币基金组织公布的有关国际金融,债务利率,外汇储备,商品价格和投资的数据。
    https://www.imf.org/en/Data

    金融时报市场数据:来自世界各地的金融市场的最新信息,包括股票价格指数,商品和外汇。
    https://markets.ft.com/data/

    Google Trends:世界各地的互联网搜索行为和热门新闻报道的数据。
    http://www.google.com/trends?q=google&ctab=0&geo=all&date=all&sort=0

    美国经济协会:美国宏观经济数据。
    https://www.aeaweb.org/resources/data/us-macro-regional

    传送门

    mlmemoirs:50个最佳机器学习公共数据集
    https://medium.com/datadriveninvestor/the-50-best-public-datasets-for-machine-learning-d80e9f030279

    子曰:世界上有三个互联网,美国互联网、中国互联网和欧洲互联网。

    故其中有一些链接,需要先探究科学上网方式,再打开。

    暂时手头没有工具怎么办?先收藏呀!

     

     

     

    展开全文
  • 机器学习iris数据集导入

    万次阅读 多人点赞 2017-11-28 20:55:49
    Iris数据集在模式识别研究领域应该是最知名的数据集了,有很文章都用到这个数据集。这个数据集里一共包括150行记录,其中前四列为花萼长度,花萼宽度,花瓣长度,花瓣宽度等4个用于识别鸢尾花的属性,第5列为鸢尾...

    Iris数据集在模式识别研究领域应该是最知名的数据集了,有很多文章都用到这个数据集。这个数据集里一共包括150行记录,其中前四列为花萼长度,花萼宽度,花瓣长度,花瓣宽度等4个用于识别鸢尾花的属性,第5列为鸢尾花的类别(包括Setosa,Versicolour,Virginica三类)。也即通过判定花萼长度,花萼宽度,花瓣长度,花瓣宽度的尺寸大小来识别鸢尾花的类别。

    这个数据集可以从UCI数据集上直接下载,具体地址为:http://archive.ics.uci.edu/ml/datasets/Iris。打开页面后点击Data folder就可以下载到本地磁盘上,默认格式为逗号分隔的文本文件。也可以直接从sklearn包里datasets里导入,语法为:from sklearn.datasets import load_iris。

    一、如果从本地磁盘上读入该数据集,可以采用pandas包里的read_excel或者read_csv方法,也可以利用python里面的csv包来处理。

    具体如下:

    import pandas as pd

    data=pd.read_csv('iris.data')      #iris.data数据与程序文件存放在同一目录下

    print data.head(5)  #可以查看一下前5行数据,检查是否读取正确

    attributes=data[['sl','sw','pl','pw']]  #前四列属性简化为sl,sw,pl,pw
    types=data['type'] #第5列属性为鸢尾花的类别

          sl   sw   pl   pw
    0    5.1  3.5  1.4  0.2
    1    4.9  3.0  1.4  0.2
    2    4.7  3.2  1.3  0.2
    3    4.6  3.1  1.5  0.2
    4    5.0  3.6  1.4  0.2
    5    5.4  3.9  1.7  0.4
    6    4.6  3.4  1.4  0.3
    7    5.0  3.4  1.5  0.2    

    如果要读取单列数据,就采用data['sl']或者data['pl'],加入列属性值就可以。

    二、如果从数据包里导入,直接利用sklearn包datasets模块导入 import load_iris。如下:

    from sklearn.datasets import load_iris

    iris=load_iris()   

    attributes=iris.data  #获取属性数据
    target=iris.target  #获取类别数据,这里注意的是已经经过了处理,target里0、1、2分别代表三种类别
    labels=irs.feature_names #获取列属性值

    如下打印出来的属性列数据:

    [[ 5.1  3.5  1.4  0.2]
     [ 4.9  3.   1.4  0.2]
     [ 4.7  3.2  1.3  0.2]
     ..., 
     [ 6.5  3.   5.2  2. ]
     [ 6.2  3.4  5.4  2.3]
     [ 5.9  3.   5.1  1.8]]

    展开全文
  • 机器学习安然数据集分析报告

    千次阅读 2017-10-29 20:53:55
    项目背景安然曾是 2000 年美国最大的公司之一。辉煌时期,市值高达700亿美元。2002 年,由于其存在大量的企业欺诈行为,这个昔日的大集团以极快的速度土崩瓦解。 在随后联邦进行的调查...利用机器学习算法进行数据

    项目背景

    安然曾是 2000 年美国最大的公司之一。辉煌时期,市值高达700亿美元。2002 年,由于其存在大量的企业欺诈行为,这个昔日的大集团以极快的速度土崩瓦解。 在随后联邦进行的调查过程中,大量有代表性的保密信息进入了公众的视线,包括成千上万涉及高管的邮件和详细的财务数据。 你将在此项目中扮演侦探,运用你的新技能,根据安然丑闻中公开的财务和邮件数据来构建相关人士识别符。利用机器学习算法进行数据分析,从邮件和财务数据中找出犯罪嫌疑人。

    数据集初步探索

    加载数据集

    首先我们加载数据集

    with open("final_project_dataset.pkl", "r") as data_file:
        data_dict = pickle.load(data_file)
    

    电子邮件和财务 (E+F) 数据字典被存储在 pickle 文件中,该文件可直接存储和加载 python 对象,非常方便。

    数据集初步分析

    分析发现我们读取的数据数据实际上是以字典形式进行。随机取一个字典,其存储结构如下所示:

    {METTS MARK:{'salary': 365788, 'to_messages': 807, 'deferral_payments': 'NaN', 'total_payments': 1061827, 'exercised_stock_options': 'NaN', 'bonus': 600000, 'restricted_stock': 585062, 'shared_receipt_with_poi': 702, 'restricted_stock_deferred': 'NaN', 'total_stock_value': 585062, 'expenses': 94299, 'loan_advances': 'NaN', 'from_messages': 29, 'other': 1740, 'from_this_person_to_poi': 1, 'poi': False, 'director_fees': 'NaN', 'deferred_income': 'NaN', 'long_term_incentive': 'NaN', 'email_address': 'mark.metts@enron.com', 'from_poi_to_this_person': 38}}
    

    在预处理此项目时,我们已将安然邮件和财务数据与字典结合在一起,字典中的每对键值对应一个人。 字典键是人名,值是另一个字典(包含此人的所有特征名和对应的值)。 数据中的特征分为三大类,即财务特征、邮件特征和 POI 标签。

    财务特征 : [‘salary’, ‘deferral_payments’, ‘total_payments’, ‘loan_advances’, ‘bonus’, ‘restricted_stock_deferred’, ‘deferred_income’, ‘total_stock_value’, ‘expenses’, ‘exercised_stock_options’, ‘other’, ‘long_term_incentive’, ‘restricted_stock’, ‘director_fees’] (单位均是美元)

    邮件特征 : [‘to_messages’, ‘email_address’, ‘from_poi_to_this_person’, ‘from_messages’, ‘from_this_person_to_poi’, ‘shared_receipt_with_poi’] (单位通常是电子邮件的数量,明显的例外是 ‘email_address’,这是一个字符串)

    POI 标签 : [‘poi’] (boolean,整数)

    数据特征

    分析这个数据字典,我们发现每个人一共有20个特征可以用于分析,其中的poi不是特征,而是label/target

    数据点总数

    分析整个数据字典,我们发现一共有146个数据点(人)。

    POI统计

    POI( Person of interest )是嫌疑犯的意思,数据集有一个标签(label)就是嫌疑犯,所以我们只需要统计
    data_dict[preson name][‘poi’] == 1
    的数量就可以了。

    统计发现有18个。

    缺失的特征

    数据集并不是每个特征后都有明确的值,有很多信息的特征是缺失的。对于salary特征,很多人的信息就是NaN。146个数据点(人)中,只有95个人有salary的具体信息。有111个人有邮箱地址,其他人的邮箱地址信息为NaN。

    异常值调查和处理

    我们在分析财务数据salary和bounds之间的关系时发现了一个极为异常额异常值,如下图所示

    这里写图片描述

    明显在右上角有一个极为异常的点,奖金和薪水远远高于其他人。我们通过代码寻找一下奖金和薪水都极高的人,看是否还有其他的异常值。

    data_dict = sorted(data_dict.items(), key = lambda x : x[1]["salary"] ,reverse=True)
    
    for x in data_dict :
        if x[1]['salary'] > 1000000 and x[1]['bonus'] > 5000000 :
            print x[0], x[1]['salary'], x[1]['bonus']
    

    审查发现一共有三个异常值。第一个为TOTAL,很明显不是一个人名,而且薪水和奖金都极度异常,我们将他作为真正的异常值删除掉。

    data_dict = dict(data_dict)
    
    data_dict.pop('TOTAL', '52')
    
    

    剩下两个分别是SKILLING JEFFREY K和LAY KENNETH L。他们分别是安然公司的CEO和董事长,他们是整个安然欺诈事件中最大的嫌疑犯。他们能有这么高的薪水和奖金也就不足为奇了。他们不是真的异常值,因此不对他们进行处理。

    优化特征选择

    创建新的特征

    我们有特征to_messages和from_poi_to_this_person这两个特征,因此我想我们可以建立一个新的特征命名为 to_poi_ratio,其值为from_poi_to_this_person和to_messages的比值,比值越大也就意味着这个人收到的邮件中来自嫌疑人的邮件越多,往往也就意味着这个人和嫌疑人的关系越密切,很有可能这个人也是一个嫌疑人。具体创立代码如下:

    def poi_email_ratio(from_poi_to_this_person, to_messages):
        if from_poi_to_this_person or to_messages == 'NaN':
            to_poi_ratio = 0
        else:
            to_poi_ratio = float(from_poi_to_this_person)/to_messages
        return to_poi_ratio
    
    # create new key and value
    for key in my_dataset:
        my_dataset[key]['to_poi_ratio'] = poi_email_ratio(my_dataset[key]['from_poi_to_this_person'],  my_dataset[key]['to_messages'])
    

    测试新特征是否会对分类算法的结果产生影响的代码如下:

    
    ### 添加新特征之后的数据集
    data = featureFormat(my_dataset, features_list, sort_keys = True)
    labels, features = targetFeatureSplit(data)
    
    ### 未添加新特征的数据集
    data = featureFormat(data_dict, features_list, sort_keys = True)
    labels, features = targetFeatureSplit(data)
    

    我们分别运行这两段代码,比较结果就可以知道新特征是否会对分类算法产生影响了。运行结果分别如下:

    ### new feature
    The naive_bayes's recall is: 0.871794871795 
    The naive_bayes's precision is : 0.871794871795
    The Decession_tree's recall is: 0.897435897436 
    The Decession_tree's precision is : 0.897435897436
    
    ### orignal feature
    The naive_bayes's recall is: 0.871794871795 
    The naive_bayes's precision is : 0.871794871795
    The Decession_tree's recall is: 0.846153846154 
    The Decession_tree's precision is : 0.846153846154
    

    通过对比发现添加新特征对于朴素贝叶斯的结果完全没有任何影响,而对于决策树算法有一定影响。添加新特征之后决策树算法的准确率提高了。

    选择最佳特征

    选择和调整算法

    选择算法

    我们这里邮件信息的学习过程实际上是一个监督学习的过程,我们这里分别使用朴素贝叶斯和决策树来对模型进行训练和评估。因为这个数据集很不平衡(imbalance), 也就说明accuracy并不是很好的评估指标,因此我们选择precision和recall来作为模型的评估指标。

    朴素贝叶斯的机器学习模型建立如下:

    from sklearn.naive_bayes import GaussianNB
    clf = GaussianNB()
    
    clf.fit(features_train, labels_train)
    y_pred = clf.predict(features_test)
    recall = recall_score(labels_test, y_pred, average='micro')
    precision = precision_score(labels_test, y_pred, average='micro')
    print "The naive_bayes's recall is: %s " % recall
    print "The naive_bayes's precision is : %s" % precision
    

    该模型预测的准确率为0.85

    决策树的机器学习模型建立如下:

    from sklearn import tree
    from sklearn.model_selection import GridSearchCV
    trees = tree.DecisionTreeClassifier()
    parameters = {'min_samples_split' : range(5,80,5), 'splitter' : ('best', 'random')}
    
    clf = GridSearchCV(trees, parameters)
    clf.fit(features_train, labels_train)
    y_pred = clf.predict(features_test)
    recall = recall_score(labels_test, y_pred, average='micro')
    precision = precision_score(labels_test, y_pred, average='micro')
    print "The Decession_tree's recall is: %s " % recall
    print "The Decession_tree's precision is : %s" % precision
    

    决策树训练模型涉及到较多的参数,要想得到更好的训练效果,对于参数的调整是绝对必要的。

    调整算法

    使用决策树有一个缺点就是容易过拟合,因此我们发应当尽可能的合理调整参数以达到最好的训练效果。

    决策树有一个参数为min_samples_split,用于设置最小分割数。另外我们还可以调整splitter参数,该参数可以设置分割方法,有两种:一种是’best’策略,用于选择最好的分割,另一种是’random’策略,用于选择最好的随机分割。通常情况下当样本量比较小的时候我们采取’best’策略进行分割,而当样本量比较大的时候,我们采取‘random’的效果会更好。

    使用 GridSearchCV 进行参数调整

    GridSearchCV 用于系统地遍历多种参数组合,通过交叉验证确定最佳效果参数。它的好处是,只需增加几行代码,就能遍历多种组合。当然与此对应的是机器学习过程所消耗的时间会相对较多。下面我们用GridSearchCV对决策树参数进行调整:

    from sklearn import tree
    from sklearn.model_selection import GridSearchCV
    trees = tree.DecisionTreeClassifier()
    parameters = {'min_samples_split' : range(5,80,5), 'splitter' : ('best', 'random')}
    
    clf = GridSearchCV(trees, parameters)
    clf.fit(features_train, labels_train)
    print clf.score(features_test, labels_test)
    

    经测试发现准确率为0.91,高于朴素贝叶斯的0.87。这里我们使用决策树效果更好。

    验证和评估

    我们分别使用精确度和召回率这两个指标来评估模型的好坏。精确度概括的说可以是:猜对真的/(猜对真的+误以为真的)。召回率概括的说可以是猜对真的/(猜对真的+误以为假的)。我们分别对两个算法模型进行评估

    验证及其重要性

    验证是用于评估模型好坏的一个重要方法,我们通常将数据集分为训练集和测试集就是为了验证的方便。前者用以建立模型(model),后者则用来评估该模型对未知样本进行预测时的泛化能力。我们需要在测试集上进行验证,来确定训练集是否“过拟合”或者“欠拟合”。不同的数据集和训练集的划分方法,也会对验证的效果产生一定影响。

    训练集和数据集的拆分

    我使用如下方法拆分训练集和数据集的

    from sklearn.model_selection import train_test_split
    features_train, features_test, labels_train, labels_test = train_test_split(
                features, labels, test_size=0.3, random_state=42)
    

    数据集的70%作为训练集,30%作为测试集

    参考资料

    我在此确认,所提交的项目为我的工作成果,其中引用的信息出自网站、书籍、论坛、博客文章和 GitHub 代码库等。下面列出我在完成项目过程中所参考的资料:

    Recall和Precision的理解 http://blog.csdn.net/Relocy/article/details/51453950

    Precision-Recall metric: http://scikit-learn.org/stable/auto_examples/model_selection/plot_precision_recall.html

    recall score :http://scikit-learn.org/stable/modules/generated/sklearn.metrics.recall_score.html

    交叉验证:http://blog.csdn.net/cherdw/article/details/54986863

    展开全文
  • 机器学习案例——鸢尾花数据集分析

    万次阅读 多人点赞 2018-05-23 21:22:15
    拿了这个小例子作为练手项目,这个案例也有师兄的帮助,记录完,发现代码贴的很,文章有点长,为了节省篇幅,有一些说明就去掉了,毕竟鸢尾花数据集比较经典,网上能找到很和我差不多的案例。还有就是发现一个新...

        前几天把python基础知识过了一遍,拿了这个小例子作为练手项目,这个案例也有师兄的帮助,记录完,发现代码贴的很多,文章有点长,为了节省篇幅,有一些说明就去掉了,毕竟鸢尾花数据集比较经典,网上能找到很多和我差不多的案例。还有就是发现一个新的markdown排版工具,今天想试试效果。

    数据来源

        首先说一下,该数据集来源于网络。Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。数据来源:http://archive.ics.uci.edu/ml/datasets/Iris

        先搜了一下,什么是花瓣和花萼,小小科普。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MiqxQnQ6-1601307500587)(https://github.com/mengxiaoxu/mengxiaoxu.github.io/raw/master/_posts/images/机器学习/花瓣花萼.png)]

    数据简单处理

    import pandas as pd
    
    # 读入数据
    df = pd.read_csv('iris/iris.csv')
    
    '''
    数据时以逗号为分隔符的,
    但是这个数据没有列的名字,
    所以先给每个列取个名字,
    直接使用数据说明中的描述
    '''
    df.columns = ['sepal_len', 'sepal_width', 'petal_len', 'petal_width', 'class']
    
    # 查看前5条数据
    df.head()
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H5K45l0Q-1601307500592)(https://github.com/mengxiaoxu/mengxiaoxu.github.io/raw/master/_posts/images/机器学习/数据前5行.png)]

    '''
    最后类别一列,感觉前面的'Iris-'有点多余
    即把class这一列的数据按'-'进行切分
    取切分后的第二个数据,为了好看一点点
    '''
    df['class'] = df['class'].apply(lambda x: x.split('-')[1]) 
    
    # 查看数据信息
    df.describe()
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YpZ6MoBL-1601307500594)(https://github.com/mengxiaoxu/mengxiaoxu.github.io/raw/master/_posts/images/机器学习/数据描述.png)]

        使用describe()可以很方便的查看数据的大致信息,可以看到数据是没有缺失值的,总共有145条,每一列的最大值、最小值、平均值都可以查看。

    数据可视化

        为了比较直观的查看数据的分布,用matplotlib进行了简单的可视化展示,查看数据的分布,画个图。

    import numpy as np
    
    import matplotlib.pyplot as plt
    import matplotlib.cm as cm
    %matplotlib inline
    
    def scatter_plot_by_category(feat, x, y):
        alpha = 0.5
        gs = df.groupby(feat)
        cs = cm.rainbow(np.linspace(0, 1, len(gs)))
        for g, c in zip(gs, cs):
            plt.scatter(g[1][x], g[1][y], color=c, alpha=alpha)
    
    plt.figure(figsize=(20,5))
    
    plt.subplot(131)
    scatter_plot_by_category('class', 'sepal_len', 'petal_len')
    plt.xlabel('sepal_len')
    plt.ylabel('petal_len')
    plt.title('class')
    
    # 为了节省篇幅,省了第二、三个图的代码
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vfob0y8d-1601307500596)(https://github.com/mengxiaoxu/mengxiaoxu.github.io/raw/master/_posts/images/机器学习/散点图.png)]

    import seaborn as sb
    
    plt.figure(figsize=(20, 10))
    for column_index, column in enumerate(df.columns):
        if column == 'class':
            continue
        plt.subplot(2, 2, column_index + 1)
        sb.violinplot(x='class', y=column, data=df)
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DDu1vkwM-1601307500597)(https://github.com/mengxiaoxu/mengxiaoxu.github.io/raw/master/_posts/images/机器学习/花花.png)]

    模型训练

        因为鸢尾花数据集很简单,特征已经全部提取好了,而且也很纯,所以就直接放到机器学习算法里面训练了。这里使用的是决策树分类算法。

    # 首先对数据进行切分,即分出数据集和测试集
    from sklearn.cross_validation import train_test_split
    
    all_inputs = df[['sepal_len', 'sepal_width',
                                 'petal_len', 'petal_width']].values
    all_classes = df['class'].values
    
    (X_train,
     X_test,
     X_train,
     Y_test) = train_test_split(all_inputs, all_classes, train_size=0.8, random_state=1)
     
    
    # 使用决策树算法进行训练
    from sklearn.tree import DecisionTreeClassifier
    
    # 定义一个决策树对象
    decision_tree_classifier = DecisionTreeClassifier()
    
    # 训练模型
    model = decision_tree_classifier.fit(training_inputs, training_classes)
    
    # 所得模型的准确性
    print(decision_tree_classifier.score(testing_inputs, testing_classes))
    
    # 使用训练的模型进行预测,为了偷懒,
    # 直接把测试集里面的数据拿出来了三条
    print(X_test[0:3])
    print(Y_test[0:3])
    model.predict(X_test[0:3])
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YELyroAm-1601307500598)(https://github.com/mengxiaoxu/mengxiaoxu.github.io/raw/master/_posts/images/机器学习/预测.png)]

        可以看到效果还是不错,在测试集上的准确率达到了97%。网上还有人提供了一个可视化工具Graph Visualization(http://www.graphviz.org/),可以利用它把构建的决策树模型直观的展示出来,这里不展示了,代码贴太多了,文章太长了。

    写在最后

        推荐一个课程,是吴恩达在网易云课堂开设的微专业——深度学习工程师课程,我学了几天了,讲的比较清晰,而且是免费的,现在我已经学完第二周的课时了,后面打算把自己的学习笔记也发出来一起交流。
    课程地址:http://mooc.study.163.com/smartSpec/detail/1001319001.htm

    推荐阅读:

    一个诗意的女孩——西凉忆

    python小结,再谈谈对学习的理解

    从具体案例了解知识图谱构建流程

    个人微信:Guanngxu
    在这里插入图片描述

    展开全文
  • 在网上搜罗了几个小时,为高质量和多样化的机器学习数据集创建了一个很好的备忘单。   首先,在搜索数据集时要记住几点。根据卡内基梅隆大学的说法。 数据集不应该是混乱的,因为您不希望花费大量时间来清理...
  • 机器学习中,寻找数据集也是非常重要的一步。质量高或者相关性高的数据集对模型的训练是非常有帮助的。 那么用于机器学习的开放数据集有哪些呢?文摘菌给大家推荐一份高质量的数据集,这些数据集或者涵盖范围广泛...
  • 人工智能大数据,公开的海量数据集下载,ImageNet数据集下载,数据挖掘机器学习数据集下载 ImageNet挑战赛中超越人类的计算机视觉系统 微软亚洲研究院视觉计算组基于深度卷积神经网络(CNN)的计算机视觉系统,在...
  • 摘要:很难找到一个特定的数据集来解决对应的机器学习问题,这是非常痛苦的。下面的网址列表不仅包含用于实验的大型数据集,还包含描述、使用示例等,在某些情况下还包含用于解决与该数据集相关的机器学习问题的算法...
  • 机器学习sklearn iris数据集官方demo

    千次阅读 2017-12-08 09:10:50
    sklearn是谷歌开发的一个机器学习框架,也是很小伙伴在学习机器学习的时候最早接触的东西。sklearn中自带了四个小数据集,其中一个很常用的就是iris鸢尾花数据集,很学习算法都可以在这个例子上进行实验。 所以...
  • 医学数据集机器学习项目

    万次阅读 多人点赞 2018-06-02 13:40:04
    机器学习的医学数据原文链接:http://edu.cda.cn/article/32这是一个机器学习医疗数据的策划清单。此列表仅供参考,请确保您尊重此处出的任何数据的任何和所有使用限制。1.医学影像数据医学图书馆向13,000名患者...
  • python机器学习sklearn数据集iris介绍

    万次阅读 2016-07-11 14:54:41
    从原始数据data中划分为训练和验证,t也做同样划分 from sklearn import cross_validation train, test, t_train, t_test = cross_validation.train_test_split(data, t, \ test_size =0.4, random_state...
  • Python - 对数据集(csv文件)的基本处理操作载入数据集数据集抽样数据集统计修改数据集1修改数据集2持更 操作 载入数据集 import pandas as pd data = pd.read_csv('数据集的文件路径或者URL',header) # header为...
  • python机器学习泰坦尼克号数据集预测实例代码
  • 机器学习》分析鸢尾花数据集

    万次阅读 2018-06-04 15:41:48
    分析鸢尾花数据集 下面将结合Scikit-learn官网的逻辑回归模型分析鸢尾花示例,给大家进行详细讲解及拓展。由于该数据集分类标签划分为3类(0类、1类...在Sklearn机器学习包中,集成了各种各样的数据集,包括前面...
  • 机器学习数据集 图片 Labelme:带注释的大型图像数据集。 http://labelme.csail.mit.edu/Release3.0/browserTools/php/dataset.php ImageNet:大家熟悉的ImageNet,女神李飞飞参与创建,同名比赛影响整个计算机视觉...
  • 机器学习——共享单车数据集预测

    千次阅读 2019-07-17 22:13:00
    共享单车的数据集,可以根据这个数据集预测共享单车的使用量,以及决策如何投放分布。这里看到每小时租金。这些数据很复杂!周末的骑行人数少些,工作日上下班期间是骑行高峰期。我们还可以从上方的数据中看到温度、...
  • 数据集的构成 1.历史数据的格式 机器学习的数据:文件csv。 不存在Mysql:因为存在性能瓶颈(数据大的时候,读取速度受限),格式不太符合机器学习要求的数据格式。 Pandas(读取工具):处理计算速度非常快,nump.....
  • 秘籍 | 机器学习数据集网址大全

    千次阅读 2019-01-27 22:48:49
    作者 | Will Badr译者 | Linstancy整理 | Jane出品 | AI科技大本营(ID:rgznai100)要找到一定特定的数据集可以解决各种机器学习问...
  • 在这篇文章中,我们将深入探讨机器学习核心步骤中的第一步:探索性分析。 在正式开始前,千万不要把这一步与数据可视化或数据结果统计混淆——数据可视化或数据结果统计意味着结果。 恰当的探索性分析其实就是回答...
  • 首先简介一下IRIS数据集,150*5的一个数据集(4属性+1结果),很小很经典,数据内容主要是对一种花的分类,分为三类。具体内容见IRIS数据集下载拿到数据集,先得了解了解数据,既然要建模分析数据不了解数据怎么行,...
  • 机器学习中的数据集划分

    千次阅读 2019-01-28 09:02:07
    我们把学习器在训练上的误差称为“训练误差”,在新样本上的误差称为“泛化误差”。 当学习器把训练样本学得太好了的时候,很可能已经把训练样本自身的一些特点当做了所有潜在样本都具有的一般性质,导致学习器的...
  • 编者语:我们在用python进行数据分析,尤其是进行机器学习的学习时,会经常性的加载很多数据集,一般我们加载某些数据集,都是先从UCI数据集上找到某个数据集,然后下载,下载完成之后再用python加载。在我进行机器...
  • 本科的时候就看过贝叶斯判别和贝叶斯分类,趁这次正好找到了一个比较合适的数据集—皮马印第安糖尿病人数据集,就顺手写了一个,写出来发现正确率还可以,因为写的比较急,所以代码可能...从统计学的角度来看,机器学习
  • 原因:数据集的标准化(服从均值为0方差为1的标准正态分布(高斯分布))是大多数机器学习算法的常见要求。 如果原始数据不服从高斯分布,在预测时表现可能不好。在实践中,我们经常进行标准化(z-score 特征减去...
  • 公司的数据尚未准备好用于机器学习有五个常见原因。   1.数据无法访问 显而易见的是,您需要实际拥有数据才能进行机器学习,但有些公司正面临着这个最初的障碍。他们知道他们想要解决的问题,但他们没有实际帮助...
  • 摘要:在机器学习中,我们的数据集往往存在各种各样的问题,如果不对数据进行预处理,模型的训练和预测就难以进行。这一系列博文将介绍一下机器学习中的数据预处理问题,以UCI数据集为例详细介绍缺失值处理、连续...
  • 基于SVM对兰花Iris数据集特征提取及分类实验 实验简介  本实验使用的数据集很经典,实验本身是...每行数据包含每个样本的四个特征和样本的类别信息,所以iris数据集是一个150行5的二维表形式的样本,被应用于多类
  • 摘要:本文对机器学习中的UCI数据集进行介绍,带你从UCI数据集官网出发一步步深入认识数据集,并就下载的原始数据详细讲解了不同类型的数据集整理如何通过程序进行整理。为了方便使用,博文中附上了包括数据集整理及...
  • Dataset:机器学习和深度学习中对数据集进行高级绘图(数据集可视化,箱线图等)的简介、应用之详细攻略——daidingdaiding 目录 箱线图 箱线图 箱线图(box plots):这些图显示了一个小长方形,有一...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 90,639
精华内容 36,255
关键字:

机器学习里数据集多列