Orange-Classification,Regression

1.Classification

Orange和sklearn一样,提供了Classification和Regression等机器学习的算法,具体使用如下:

import Orangedata = Orange.data.Table("voting")
lr = Orange.classification.LogisticRegressionLearner()
rf = Orange.classification.RandomForestLearner(n_estimators=100)
res = Orange.evaluation.CrossValidation(data, [lr, rf], k=5)print("Accuracy:", Orange.evaluation.scoring.CA(res))
print("AUC:", Orange.evaluation.scoring.AUC(res))

Learners and Classifiers

分类是由两个类型的对象组成:学习器和分类器。学习器考虑到class-labeled数据并返回一个分类器。给定前三个数据实例,分类器返回预测的分类:

import Orange
data = Orange.data.Table("voting")#学习器
learner = Orange.classification.LogisticRegressionLearner()#返回一个分类器
classifier = learner(data)#查看分类结果
classifier(data[:3])#预测数据
c_values = data.domain.class_var.values
for d in data[5:8]:c = classifier(d)print("{}, originally {}".format(c_values[int(classifier(d)[0])],d.get_class()))#统计错误
x = np.sum(data.Y != classifier(data))

Probabilistic Classification

找到分类器分配给每个类的概率大小。

data = Orange.data.Table("voting")
learner = Orange.classification.LogisticRegressionLearner()
classifier = learner(data)
target_class = 1
print("Probabilities for %s:" % data.domain.class_var.values[target_class])
probabilities = classifier(data, 1)
for p, d in zip(probabilities[5:8], data[5:8]):print(p[target_class], d.get_class())

Cross-Validation

data = Orange.data.Table("titanic")
lr = Orange.classification.LogisticRegressionLearner()
res = Orange.evaluation.CrossValidation(data, [lr], k=5)
print("Accuracy: %.3f" % Orange.evaluation.scoring.CA(res)[0])
print("AUC:      %.3f" % Orange.evaluation.scoring.AUC(res)[0])

Handful of Classifiers

Orange包含很多种分类算法,大部分是从sklearn里边打包的过来的,如下:

import Orange
import randomrandom.seed(42)
data = Orange.data.Table("voting")
test = Orange.data.Table(data.domain, random.sample(data, 5))
train = Orange.data.Table(data.domain, [d for d in data if d not in test])tree = Orange.classification.tree.TreeLearner(max_depth=3)
knn = Orange.classification.knn.KNNLearner(n_neighbors=3)
lr = Orange.classification.LogisticRegressionLearner(C=0.1)learners = [tree, knn, lr]
classifiers = [learner(train) for learner in learners]target = 0
print("Probabilities for %s:" % data.domain.class_var.values[target])
print("original class ", " ".join("%-5s" % l.name for l in classifiers))c_values = data.domain.class_var.values
for d in test:print(("{:<15}" + " {:.3f}"*len(classifiers)).format(c_values[int(d.get_class())],*(c(d, 1)[0][target] for c in classifiers)))

2.Regression

回归和分类器相似,有一个学习器和回归器(回归模型),回归的学习器是接收数据并返回回归器,回归器是预测连续class的值。

import Orangedata = Orange.data.Table("housing")
learner = Orange.regression.LinearRegressionLearner()
model = learner(data)print("predicted, observed:")
for d in data[:3]:print("%.1f, %.1f" % (model(d)[0], d.get_class()))

Handful of Regressors

建立回归树模型:

data = Orange.data.Table("housing")
tree_learner = Orange.regression.SimpleTreeLearner(max_depth=2)
tree = tree_learner(data)
#输出树结构
print(tree.to_string())random.seed(42)
test = Orange.data.Table(data.domain, random.sample(data, 5))
train = Orange.data.Table(data.domain, [d for d in data if d not in test])lin = Orange.regression.linear.LinearRegressionLearner()
rf = Orange.regression.random_forest.RandomForestRegressionLearner()
rf.name = "rf"
ridge = Orange.regression.RidgeRegressionLearner()learners = [lin, rf, ridge]
regressors = [learner(train) for learner in learners]print("y   ", " ".join("%5s" % l.name for l in regressors))for d in test:print(("{:<5}" + " {:5.1f}"*len(regressors)).format(d.get_class(),*(r(d)[0] for r in regressors)))

Cross Validation

data = Orange.data.Table("housing.tab")lin = Orange.regression.linear.LinearRegressionLearner()
rf = Orange.regression.random_forest.RandomForestRegressionLearner()
rf.name = "rf"
ridge = Orange.regression.RidgeRegressionLearner()
mean = Orange.regression.MeanLearner()learners = [lin, rf, ridge, mean]res = Orange.evaluation.CrossValidation(data, learners, k=5)
rmse = Orange.evaluation.RMSE(res)
r2 = Orange.evaluation.R2(res)print("Learner  RMSE  R2")
for i in range(len(learners)):print("{:8s} {:.2f} {:5.2f}".format(learners[i].name, rmse[i], r2[i]))

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466826.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS、Ubuntu、Debian三个linux比较异同

Linux有非常多的发行版本&#xff0c;从性质上划分&#xff0c;大体分为由商业公司维护的商业版本与由开源社区维护的免费发行版本。 商业版本以Redhat为代表&#xff0c;开源社区版本则以debian为代表。这些版本各有不同的特点&#xff0c;在不同的应用领域发挥着不同的作用&a…

再见,杀毒软件之父,王江民!

王江民&#xff0c;中国最早的反病毒专家&#xff0c;被业界尊称“中国杀毒软件之父”、“中国反病毒第一人。以38岁为分界&#xff0c;王江民的前半生&#xff0c;是中国青年身残志坚的楷模&#xff0c;他的后半生是中国安全软件的奠基人&#xff0c;带领中国商用软件第一个走…

arm流水线相关

不管是arm几,只要是在执行指令时采用的是流水线机制,前3级的都是:取指->译码->执行.在"执行"阶段,pc总是指向该指令地址加8字节的地址.换句话说,pc总是指向正在执行的指令地址再加2条指令的地址.之所以是2条指令,是因为在"执行"阶段前还有"取指…

C语言——回调函数

C语言——回调函数 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 如果参数是一个函数指针&#xff0c;调用者可以传递一个函数的地址给实现者&#xff0c;让实现者去调用它&#xff0c;这就是回调函数。 void func(void (*f)(void*), void *p) 提供…

百面机器学习——第一章特征工程

特征工程&#xff1a;是对原始数据进行一系列工程处理&#xff0c;将其提炼为特征&#xff0c;作为输入供算法和模型使用。从本质上来讲&#xff0c;特征工程是一个表示和展现数据的过程。在实际工作中&#xff0c;特征工程旨在去除原始数据中的杂质和冗余&#xff0c;设计更高…

C语言不调用库函数画一个三角形

这个是知乎上面的一个题目&#xff0c;非常有意思&#xff0c;晚上打球回来就下决心要写代码实现下&#xff0c;再加上自己剖析&#xff0c;让大家明白一个三角形在坐标系中如何用C语言画出来的。https://www.zhihu.com/question/53832071/answer/1625616415第一步就是要先构建…

JS高级——变量提升

JS执行过程 1、首先是预解析&#xff1a;预解析过程最重要的是提升&#xff0c;在JavaScript代码在预解析阶段&#xff0c;会对以var声明的变量名&#xff0c;和function开头的语句块&#xff0c;进行提升操作 2、执行操作 全局中解析和执行过程 <script>console.log(a);…

ocs 2007技巧:查看存档服务记录的消息内容

要查看存档服务记录的消息内容&#xff0c;请进入SQL&#xff0c;运行下列命令&#xff1a;USE LcsLogGOSELECT * FROM Messages转载于:https://www.cnblogs.com/kksip/archive/2008/01/08/1030858.html

图像多分类——卷积神经网络

例子参考&#xff1a;https://www.jiqizhixin.com/articles/2019-05-15-2 数据集&#xff1a;https://www.cs.ccu.edu.tw/~wtchu/projects/MoviePoster/index.html 将获取到原始数据集&#xff0c;其中&#xff0c;有三个文件&#xff0c; Movie Poster Dataset是1980-2015年…

C语言——可变参数

C语言——可变参数 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 1、目前为止&#xff0c;见过比较熟悉的可变参数的函数就是printf()函数 int printf(const char *format, …);<span style"font-family: Arial, Helvetica, sans-serif; back…

学习C++,知识点太多记不住怎么办?

学习一门新的编程语言之前&#xff0c;你首先会做什么&#xff1f;先熟悉变量、运算符、函数、类和结构、测试等工具&#xff0c;随后按照指导按部就班进行操作&#xff1f;这样的流程对于学习其他语言如Python、Java来说或许行得通&#xff0c;但C的话&#xff0c;够呛。想要真…

【转】建立公用程序库,提升软件开发生产力

当我们谈及软件开发的生产力时&#xff0c;其实有相当多的因素在影响着。举凡程序人本身的素质、所使用的程序语言、应用程序框架&#xff08;Application Framework&#xff09;的选择、是否具备好的开发工具&#xff08;例如IDE、程序代码产生器&#xff09;、对开发环境的熟…

vim使用指南

1 删除 https://www.jianshu.com/p/ab7936af747c 转载于:https://www.cnblogs.com/zhaoyz/p/8341231.html

C语言编程规范 clean code

目的规则并不是完美的&#xff0c;通过禁止在特定情况下有用的特性&#xff0c;可能会对代码实现造成影响。但是我们制定规则的目的“为了大多数程序员可以得到更多的好处”&#xff0c; 如果在团队运作中认为某个规则无法遵循&#xff0c;希望可以共同改进该规则。参考该规范之…

DataWhale组队-Pandas(下)缺失数据(打卡)

1.缺失值概要 数据的缺失主要包括记录的缺失和记录中某个字段信息的缺失&#xff0c;两者都会造成分析结果的不准确&#xff0c;以下从缺失值产生的原因及影响扥方面展开分析。 &#xff08;1&#xff09;缺失值产生的原因 1&#xff09;有些信息暂时无法获取&#xff0c;或…

状态机——protothreads

状态机——Protothreads 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 一、prothreads的优缺点 优点&#xff1a; 1. 以纯C语言实现&#xff0c;无硬件依靠性&#xff1b;因此不存在移植的困难。 2. 极少的资源需求&#xff0c;每个Protothread仅需要…

南橘北枳

春秋战国时期&#xff0c;智者晏子曾经说过一句话&#xff1a;“桔生淮南为橘&#xff0c;生于淮北为枳”&#xff0c;说的是淮南香甜的橘子移植到淮北就变成苦涩难吃的枳。因为事物的条件和环境等变了&#xff0c;所以才会这样。这句话现在大多是针对人品说的&#xff0c;大概…

CentOS经常使用文件操作命令[百度博客搬家]

路径操作的CentOS经常使用命令 如今整理例如以下&#xff08;百度博客搬家) cd pwd NO1. 显示当前路径 [rootrehat root]# pwd NO2. 返回用户主文件夹 [rootrehat root]# cd NO3. 改变到其他路径 [rootrehat root]# cd /etc NO4. 返回到上一级文件夹 [rootrehat root]…

Apache配置SSL证书服务器傻瓜步骤

在LinuxApacheOpenSSL中配置SSL安全证书认证是不难的&#xff0c;我的另一篇工作随记中曾提到[url]http://www.host01.com/article/server/00070002/0621409075193649.htm[/url]中有所有步骤&#xff0c;不过其中的一些描述有点复杂&#xff0c;并且依赖关系也没有这些严格。这…

用C语言字符画圆

用C语言画圆&#xff0c;这是一是算法的问题&#xff0c;我们知道&#xff0c;程序是由数据结构加算法组成的&#xff0c;研究这类东西&#xff0c;其实也是研究算法的问题&#xff0c;是比较有意思的。圆心为0的时候&#xff0c;圆的公式公式&#xff1a;那我们要如何写代码呢…