例如,如果我们给定一个训练集,它有超过 10000 个数据点(训练集的大小),没有超过 100000 个特征,类标签接近 20。那么在这种情况下,哪个分类器(决策树、svm、Naive 等方法)贝叶斯、神经网络、增强)会给我最准确的分类测试数据的类标签。
我是数据挖掘和 Weka 的新手。我使用 GUI 在 Weka 中使用J48构建了一个分类器。当 Weka 完成运行时,它说:
Correctly Classified Instances 1035 - 68.543 %
Incorrectly Classified Instances 475 - 31.457 %
Run Code Online (Sandbox Code Playgroud)
从我自己的代码(使用 IKVM.NET 的 C#)运行时,我使用相同的未标记数据集重新评估我的模型,将预测类的结果保存到 ARFF 文件中,并计算我从 1500 条记录中获得的结果。
大约 1300 条记录被正确分类,200 条没有被正确分类,这使(我认为)精确度为 86%。
这样对吗?为什么结果会不同呢?
大家好,我正在尝试用 Python 创建一个分类模型来预测共享单车站每小时的相对流入或流出过多的情况。
我的数据帧的前 5 行(总共超过 200,000 行)看起来像这样,我在“flux”列中分配了值 0、1、2 - 0 如果没有重大操作,1 如果流入太多,2 如果流出过多。
我正在考虑使用 station_name(超过 300 个车站)、一天中的小时和一周中的某一天作为预测变量来对“通量”进行分类。
我应该带什么去?朴素贝叶斯?克恩?随机森林?还有什么合适的吗?GDM?支持向量机?
仅供参考:始终为 0 的基线预测相当高,达到 92.8%。不幸的是,逻辑回归和决策树的准确性与此相当,并且并没有提高太多。KNN 需要永远......
那些对机器学习更有经验的人在处理这样的分类问题时有什么建议吗?
我正在尝试在 python 上使用 xgboost。这是我的代码。xgb.train工作,但我收到一个错误xgb.cv,尽管我似乎以正确的方式使用它。
以下对我有用:
###### XGBOOST ######
import datetime
startTime = datetime.datetime.now()
import xgboost as xgb
data_train = np.array(traindata.drop('Category',axis=1))
labels_train = np.array(traindata['Category'].cat.codes)
data_valid = np.array(validdata.drop('Category',axis=1))
labels_valid = np.array(validdata['Category'].astype('category').cat.codes)
weights_train = np.ones(len(labels_train))
weights_valid = np.ones(len(labels_valid ))
dtrain = xgb.DMatrix( data_train, label=labels_train,weight = weights_train)
dvalid = xgb.DMatrix( data_valid , label=labels_valid ,weight = weights_valid )
param = {'bst:max_depth':5, 'bst:eta':0.05, # eta [default=0.3]
#'min_child_weight':1,'gamma':0,'subsample':1,'colsample_bytree':1,'scale_pos_weight':0, # default
# max_delta_step:0 # default
'min_child_weight':5,'scale_pos_weight':0, 'max_delta_step':2,
'subsample':0.8,'colsample_bytree':0.8,
'silent':1, 'objective':'multi:softprob' }
param['nthread'] = 4 …Run Code Online (Sandbox Code Playgroud) 我正在使用 Python 在 H2O 中构建二进制分类模型。我的 'y' 值是 'ok' 和 'bad'。我需要使用 ok = negative class = 0 和 bad = positive class = 1 来计算指标。但是,我看不到在 H2O 中设置它的任何方法。例如,这里是预测和混淆矩阵的输出:
confusion matrix
bad ok Error Rate
bad 3859 631 0.1405 (631.0/4490.0)
ok 477 1069 0.3085 (477.0/1546.0)
Total 4336 1700 0.1836 (1108.0/6036.0)
>>> predictions.head(10)
predict bad ok
0 bad 0.100604 0.899396
1 bad 0.100604 0.899396
2 bad 0.112232 0.887768
3 ok 0.068917 0.931083
4 ok 0.089706 0.910294
5 ok 0.089706 0.910294
6 ok 0.089706 0.910294 …Run Code Online (Sandbox Code Playgroud) H2O 中的随机森林实现与标准随机森林库之间有性能差异吗?
有没有人对这两种实现进行过或分析过。
classification machine-learning random-forest h2o data-science
在我遇到的大多数涉及二元分类的文章中,我倾向于看到两种主要类型的输出:
Dense(2, activation = "softmax")
Run Code Online (Sandbox Code Playgroud)
或者
Dense(1, activation = "sigmoid")
Run Code Online (Sandbox Code Playgroud)
Dense(2, activation = "softmax")拥有或Dense(1, activation = "sigmoid")作为二元分类的输出层有什么区别?
具体来说:
首先,性能上有区别吗?
最后,经过培训,使用上有什么区别吗?
我看到垃圾邮件预测将邮件分类为其他人制作的垃圾邮件和火腿.
该程序生成以下值.(损失,准确)
在此代码中,结果只是损失,准确性,
我认为准确性毫无意义.我需要精确度,召回值(F1测量)
但是,由于我的代码分析工作不正常,我知道Precision和Recall.但我不知道如何在此代码中计算(代码嵌入)Precision和Recall.
我正在尝试使文本分类
import pandas as pd
import pandas
from sklearn import svm
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer
import numpy as np
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.multiclass import OneVsOneClassifier
from sklearn.svm import SVC
from sklearn import cross_validation
from sklearn.metrics import confusion_matrix
dataset = pd.read_csv('data.csv', encoding = 'utf-8')
data = dataset['text']
labels = dataset['label']
X_train, X_test, y_train, y_test = train_test_split (data, labels, test_size = 0.2, random_state = 0)
count_vector = CountVectorizer()
tfidf = TfidfTransformer() …Run Code Online (Sandbox Code Playgroud) python classification python-3.x scikit-learn text-classification
我有一个包含133个样本的数据集(133行和2个coloumns(属性)).我需要从1(第1,第6,第11,第16 ......等)开始分配每个第5个样本作为测试数据集,其余作为训练数据集.我该怎么做?
对于单层神经网络的实现,我有两个数据文件.
In:
0.832 64.643
0.818 78.843
Out:
0 0 1
0 0 1
Run Code Online (Sandbox Code Playgroud)
以上是2个数据文件的格式.
目标输出为"1表示相应输入所属的特定类,"0表示其余2个输出.
问题如下:
您的单层神经网络将在Y = A*X + b中找到A(3乘2矩阵)和b(3乘1矢量),其中Y是[C1,C2,C3]',X是[x1,x2]' .
为了用神经网络解决上述问题,我们可以重新编写如下公式:Y = A'*X'其中A'= [A b](3乘3矩阵),X'是[x1,x2, 1]"
现在您可以使用具有三个输入节点(分别用于x1,x2和1)和三个输出(C1,C2,C3)的神经网络.
由此产生的9(因为我们在3个输入和3个输出之间有9个连接)权重将等同于A'矩阵的元素.
基本上,我试图做这样的事情,但它不起作用:
function neuralNetwork
load X_Q2.data
load T_Q2.data
x = X_Q2(:,1);
y = X_Q2(:,2);
learningrate = 0.2;
max_iteration = 50;
% initialize parameters
count = length(x);
weights = rand(1,3); % creates a 1-by-3 array with random weights
globalerror = 0;
iter = 0;
while globalerror ~= 0 && iter <= max_iteration …Run Code Online (Sandbox Code Playgroud) classification ×11
python ×5
h2o ×2
matlab ×2
data-science ×1
dataset ×1
j48 ×1
perceptron ×1
precision ×1
python-3.x ×1
r ×1
rnn ×1
scikit-learn ×1
tensorflow ×1
weka ×1
xgboost ×1