本帖最后由 renxiao2003 于 2018-06-03 22:16 编辑
沙发先坐上。
1.目前,机器学习的常用开源工具有哪些?(以下内容来看成CSDN,确实总结的不错。)
研究数据挖掘和机器学习有一段时间了,对数据挖掘来说,商用软件有SAS、 Clementine、Oracle数据挖掘组件等等;由于个人学习和版权、算法定制等问题,开源的数据挖掘与机器学习软件(库)目前也十分必需,现在就跟大家介绍下比较流行和常用的机器学习开源库。
以前在学校用过matlab,说实话真方便,通常一个模型只要几十行甚至十几行代码就能搞定,但是正版matlab较贵,而且不太适合商业开发使用,所以工业界使用它的并不多(通信行业、研究所比较普遍);相应地,在工业界机器学习和数据挖掘的实验语言多为java、python,因为 python与C\C++具有先天的血缘,所以python更容易扩展;java的机器学习库也十分流行,主要体现在大数据下的jvm的本质和算法并行化的优势;现推荐给大家以下学习库:
1.机器学习开源软件网(收录了各种机器学习的各种编程语言学术与商业的开源软件)
http://mloss.org
2 偶尔找到的机器学习资源网:(也非常全,1和2基本收录了所有ML的经典开源软件了)
http://www.dmoz.org/Computers/Artificial_Intelligence/Machine_Learning/Software/
3 libsvm (支持向量机界最牛的,不用多说了,台湾大学的林教授的杰作)
http://www.csie.ntu.edu.tw/~cjlin/libsvm/
4 WEKA (基于java的机器学习算法最全面最易用的开源软件)
http://www.cs.waikato.ac.nz/ml/weka/
5 scikit (本人最喜欢的一个基于python的机器学习软件,代码写得非常好,而且官方的文档非常全,所有都有例子,算法也齐全,开发也活跃
,强烈推荐给大家用)
https://pypi.python.org/pypi/scikit-learn/
6 OpenCv(最牛的开源计算机视觉库了,前途无可限量,做图像处理与模式识别的一定要用,总不能整天抱着matlab做实验和工业界脱节吧,但是有一定难度)
http://opencv.willowgarage.com/wiki/
7 Orange (基于c++和python接口的机器学习软件,界面漂亮,调用方便,可以同时学习C++和python,还有可视化的功能,)
http://orange.biolab.si/
8 Mallet (基于JAVA实现的机器学习库,主要用于自然语言处理方面,特色是马尔可夫模型和随机域做得好,可和WEKA互补)
http://mallet.cs.umass.edu/
9 NLTK(PYTHON的自然处理开源库,非常易用,也强大,还有几本orelly的经典教程)
http://nltk.org/
10 lucene(基于java的包括nutch,solr,hadoop,mahout等全套,是做信息检索和搜索引擎的同志们必学的开源软件了,学JAVA的必学)
http://lucene.apache.org/
Additional:
1.pyml(a python module for machine learning,支持svm/knn/k-means==)
http://mlpy.sourceforge.net/
2.mahout(阿帕奇基金下项目,其主要是可以与hadoop进行天然结合,从而并行运行,在鲁棒性方面很好)
http://mahout.apache.org/
3.milk(python的机器学习工具包,主要是针对监督学习,包括svm/knn/决策树)
http://pypi.python.org/pypi/milk/
4.Octave(Andrew NG课上推荐使用的,类似matlab)
http://www.gnu.org/software/octave/
2.您是否接触到此方面的业务?(比如人脸识别系统,过滤垃圾邮件,记录用户特征等)如果接触类似的业务,在系统搭建过程中,是基于哪种学习框架?
我没有做这个,但我们部门确实有做机器学习的。使用的是tensorflow,我们的小队友天天研究这个。书也好几本。用的是Python语言。不过我是做纯软件开发的,不太了解这方面的知识。
3.您了解Scikit-Learn?结合应用场景,您认为其优质何在?(以下内容来自CSDN)
Scikit-Learn是用Python开发的机器学习库,其中包含大量机器学习算法、数据集,是数据挖掘方便的工具。 Scikit-Learn的安装可使用pip工具,在安装前需要安装NumPy和SciPy,打开一个命令行中端并输入: $pip install -U scikit-learn 基本操作: 1.数据加载: 对于csv文件,pandas库提供的pandas.read_csv能够快速的加载并根据提供的参数可进行数据的处理,生成DataFrame: import pandas as pd df=pd.read_csv('data.csv') http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html(pandas api)
对于具有一定格式的文本文件或二进制文件,可使用NumPy进行数据加载: import numpy as np data_file='dataset.txt' X=np.load_txt(data_file)
对于其他格式的文件,可以自由处理并加载到二维数组中,最终可生成DataFrame 2.数据处理: 在将数据加载到DataFrame中后可方便地对数据进行处理,也可以方便地进行特征选择与提取 import pandas as pd df = pd.read_csv('data.csv') df.columns = ['id','name','time']#设置数据的特征名 df.set_index('id')#设置索引 df['age'] = 0 #添加新的属性age,并全部赋值为0 for i,row in df.iterrows(): #逐行遍历dataframe #body of for http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html(DataFrame Api)
3.一个分类的例子: 用决策树预测获胜球队(来自《Learning Data Mining With Python》) 采集数据:http://www.basketball-reference.com/leagues/NBA_2014_games.html提供了2013-2014的比赛胜负数据,不过已经无法一键导出csv了,需要一个月份一个月份地进行csv的复制 样例数据如下:
将所有数据保存到文本文件并另存为CSV文件以便后面的使用。 接下来就是加载我们的CSV文件:data.csv import numpy as np import pandas as pd dataset = pd.read_csv('data.csv') #注意文件在自己电脑中的路径 print dataset.ix[:5] #查看前5行数据 数据处理: read_csv函数有一定的数据处理能力,所以我们修改一下刚刚的代码 dataset = pd.read_csv('data.csv',parse_dates=["Date"],skiprows=[0,]) #将'Date'属性转换为了标准日期类型,省略了第一行 dataset.columns = ["Date","Score_Type","Visitor Team","VisitorPts","Home Team","HomePts","OT?","Notes"]
提取新的特征: dataset['HomeWin'] = dataset["VisitorPts"] < dataset["HomePts"] y_true = dataset['HomeWin'].values #提取出一列数据 #创建字典存储球队上次比赛的结果 from collections import defaultdict won_last = defaultdict(int) for index,row in dataset.iterrows(): home_team = row["Home Team"] visitor_team = row["Visitor Team"] row["HomeLastWin"] = won_last[home_team] row["VisitorLastWin"] = won_last[visitor_team] dataset.ix[index] = row win_last[home_team] = row["HomeWin"] win_last[visitor_team] = not row["HomeWin"] 使用决策树: from sklearn.trree import DecisionTreeClassifier clf = DecisionTreeClassifier(random_state=14) X_previouswins = dataset[["HomeLastWin","VisitorLastWin"]].values scores = cross_val_score(clf,X_previouswins ,y_true,scoring='accuracy') 看了看似乎所有的机器学习库都是Python的。有空我要抓紧学习一下Python了。
|