Orange-Classification,Regression
生活随笔
收集整理的這篇文章主要介紹了
Orange-Classification,Regression
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.Classification
Orange和sklearn一樣,提供了Classification和Regression等機(jī)器學(xué)習(xí)的算法,具體使用如下:
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
分類是由兩個(gè)類型的對(duì)象組成:學(xué)習(xí)器和分類器。學(xué)習(xí)器考慮到class-labeled數(shù)據(jù)并返回一個(gè)分類器。給定前三個(gè)數(shù)據(jù)實(shí)例,分類器返回預(yù)測(cè)的分類:
import Orange data = Orange.data.Table("voting")#學(xué)習(xí)器 learner = Orange.classification.LogisticRegressionLearner()#返回一個(gè)分類器 classifier = learner(data)#查看分類結(jié)果 classifier(data[:3])#預(yù)測(cè)數(shù)據(jù) 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()))#統(tǒng)計(jì)錯(cuò)誤 x = np.sum(data.Y != classifier(data))Probabilistic Classification
找到分類器分配給每個(gè)類的概率大小。
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
回歸和分類器相似,有一個(gè)學(xué)習(xí)器和回歸器(回歸模型),回歸的學(xué)習(xí)器是接收數(shù)據(jù)并返回回歸器,回歸器是預(yù)測(cè)連續(xù)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) #輸出樹結(jié)構(gòu) 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]))?
總結(jié)
以上是生活随笔為你收集整理的Orange-Classification,Regression的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 51单片机——LCD1602
- 下一篇: 李雅普诺夫(第二方法)稳定性分析+例题