我们有一个基于生产网络的产品,允许用户对商品的未来价值(或需求)做出预测,历史数据包含大约10万个例子,每个例子有大约5个参数;
考虑一类称为谓词的数据:
prediction {
id: int
predictor: int
predictionDate: date
predictedProductId: int
predictedDirection: byte (0 for decrease, 1 for increase)
valueAtPrediciton: float
}
Run Code Online (Sandbox Code Playgroud)
以及测量预测结果的配对结果类:
predictionResult {
id: int
valueTenDaysAfterPrediction: float
valueTwentyDaysAfterPrediction: float
valueThirtyDaysAfterPrediction: float
}
Run Code Online (Sandbox Code Playgroud)
我们可以定义一个成功的测试用例,其中如果任何两个未来的值检查点在预测时考虑方向和值时是有利的.
success(p: prediction, r: predictionResult): bool =
count: int
count = 0
// value is predicted to fall
if p.predictedDirection = 0 then
if p.valueAtPrediciton > r.valueTenDaysAfterPrediction then count = count + 1
if p.valueAtPrediciton > r.valueTwentyDaysAfterPrediction then count = count + 1
if p.valueAtPrediciton …Run Code Online (Sandbox Code Playgroud) pattern-recognition classification machine-learning data-mining
我正在研究拇指识别系统.我需要实现KNN算法来分类我的图像.根据这个,它只有2个测量值,通过它计算找到最近邻居的距离,但在我的情况下,我有400张25 X 42的图像,其中200个用于训练,200个用于测试.我正在寻找几个小时,但我找不到找到点之间距离的方法.
编辑:我已将前200幅图像重新塑造成1 X 1050并将其存储在trainingData200 X 1050 的矩阵中.同样我制作了testingData.
我试图复制StratifiedShuffleSplitX 的例子,不是数组而是稀疏矩阵.在下面的示例中,此矩阵是通过DictVectorizer拟合混合名义和数字要素的数组创建的.
from sklearn.feature_extraction import DictVectorizer
from sklearn.preprocessing import LabelEncoder
from sklearn.cross_validation import StratifiedShuffleSplit
X = [{"a":1, "b":"xx"}, {"a":2, "b":"yx"}, {"a":2, "b":"yx"}, {"a":1, "b":"xx"}]
y = ["A", "B", "B", "A"]
X = DictVectorizer().fit_transform(X)
y = LabelEncoder().fit_transform(y)
sss = StratifiedShuffleSplit(y, 3, test_size=0.5, random_state=0)
for train_index, test_index in sss:
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
Run Code Online (Sandbox Code Playgroud)
当我运行脚本时,抛出以下错误:
Traceback (most recent call last):
File ".../test.py", line 22, in <module>
X_train, X_test = X[train_index], X[test_index]
TypeError: only …Run Code Online (Sandbox Code Playgroud) 我正在尝试用Java编写一组关于特定主题的新闻文章.我使用Crawler4J抓取了有关特定主题的新闻网站,将我自己的TF/IDF实现与语料库进行比较(有理由说我没有使用内置的Weka或TF/IDF的其他实现,但它们可能已经出来了这个问题的范围)并应用了一些其他特定于域的逻辑,这些逻辑为每个文档留下了一袋单词+权重(我将其存储在值为0到1之间的Map中).我想通过查看单词权重来聚类关于类似主题的文章,所以我开始使用Weka的EM和SimpleKMeans群集.问题是我得到了相当不起眼的结果,而且我
例如,在约300篇文章的玩具数据集中,如果我将每个文档中的单词修剪为前20,然后使用完整的单词作为特征,我最终得到~2k独特的特征.我正在使用每篇文章作为训练实例,并尝试使用一些不同的参数来调整SimpleKMeans聚类器(例如~20-30个聚类,100个最大迭代).当我一目了然地看到数据时,我发现很多文章的关键词看起来非常密切相关,所以我期望高质量的结果和一堆包含~5-10篇文章的集群.不幸的是,结果通常是一个集群,其中有一半的文章,一堆集群各有一篇文章,还有一些散落者有2-5篇左右的文章.
这些结果是预期的,还是有办法获得更高质量的结果?请注意,我还研究了LingPipe和其他提供集群功能的框架,并使用滚动我自己的EM实现(具有适度但不是很大的成功).在此先感谢您的帮助!
朴素贝叶斯和Logistic回归都可以对这两个数据集进行完美分类吗?我的理解是,朴素贝叶斯(Naive Bayes)可以,带有复杂项的Logistic回归可以对这些数据集进行分类。如果我错了,请帮忙。
数据集的图像在这里:
classification machine-learning dataset data-mining logistic-regression
我想使用GMM(高斯混合模型来聚类二进制图像,并且还想在二进制图像本身上绘制聚类质心).
我使用它作为我的参考:http: //in.mathworks.com/help/stats/gaussian-mixture-models.html
这是我的初始代码
I=im2double(imread('sil10001.pbm'));
K = I(:);
mu=mean(K);
sigma=std(K);
P=normpdf(K, mu, sigma);
Z = norminv(P,mu,sigma);
X = mvnrnd(mu,sigma,1110);
X=reshape(X,111,10);
scatter(X(:,1),X(:,2),10,'ko');
options = statset('Display','final');
gm = fitgmdist(X,2,'Options',options);
idx = cluster(gm,X);
cluster1 = (idx == 1);
cluster2 = (idx == 2);
scatter(X(cluster1,1),X(cluster1,2),10,'r+');
hold on
scatter(X(cluster2,1),X(cluster2,2),10,'bo');
hold off
legend('Cluster 1','Cluster 2','Location','NW')
P = posterior(gm,X);
scatter(X(cluster1,1),X(cluster1,2),10,P(cluster1,1),'+')
hold on
scatter(X(cluster2,1),X(cluster2,2),10,P(cluster2,1),'o')
hold off
legend('Cluster 1','Cluster 2','Location','NW')
clrmap = jet(80); colormap(clrmap(9:72,:))
ylabel(colorbar,'Component 1 Posterior Probability')
Run Code Online (Sandbox Code Playgroud)
但问题是我无法在主二进制图像中绘制从GMM接收的聚类质心.我该怎么做?

**现在假设我有一个序列中的10个这样的图像我想将它们的平均位置的信息存储在两个单元格数组中然后我该怎么做.这是我的代码我的新问题**
images=load('gait2go.mat');%load the matrix file
for i=1:10
I{i}=images.result{i}; …Run Code Online (Sandbox Code Playgroud) matlab classification cluster-analysis machine-learning mixture-model
我正在做分类,我有一个像这样的两个大小的列表;
Data=[list1,list2]
Run Code Online (Sandbox Code Playgroud)
list1是1000*784大小.这意味着已将1000张图像从28*28大小重新整形为784.
list2是1000*1大小.它显示每个图像所属的标签.使用以下代码,我应用了PCA:
from matplotlib.mlab import PCA
results = PCA(Data[0])
Run Code Online (Sandbox Code Playgroud)
输出是这样的:
Out[40]: <matplotlib.mlab.PCA instance at 0x7f301d58c638>
Run Code Online (Sandbox Code Playgroud)
现在,我想使用SVM作为分类器.我应该添加标签.所以我为SVm提供了这样的新数据:
newData=[results,Data[1]]
Run Code Online (Sandbox Code Playgroud)
我不知道如何在这里使用SVM.
有没有办法报告sklearn模型二元分类模型的期望值?在之前的问题中有人推荐predict_proba.我期待一个类似于xgboost包"objective": "binary:logistic"参数的输出.但是,似乎这不会产生预期的结果.我的Y列车价值是谨慎的.
我对输出感到困惑predict_proba.因为我只有一个目标,所以我期待返回一个列预测.但是,这会返回两列,这些列总和为一列.这些值似乎与模型实际预测的值不对应:
In [27]: modl.predict(X_test)
Out[27]: array([0, 0, 0, ..., 0, 0, 0])
In [28]: modl.predict_proba(X_test)
Out[28]:
array([[ 0.6, 0.4],
[ 0.7, 0.3],
[ 1. , 0. ],
...,
[ 1. , 0. ],
[ 0.9, 0.1],
[ 0.8, 0.2]])
Run Code Online (Sandbox Code Playgroud) 我正在使用python并scikit-learn做一些分类.
是否可以重用分类器学习的参数?
例如:
from sklearn.svm import SVC
cl = SVC(...) # create svm classifier with some hyperparameters
cl.fit(X_train, y_train)
params = cl.get_params()
Run Code Online (Sandbox Code Playgroud)
让我们把它params作为字符串字典存储在某处,甚至写入文件json.假设,我们希望以后使用这种训练有素的分类器对某些数据做出一些预测.尝试恢复它:
params = ... # retrieve these parameters stored somewhere as a dictionary
data = ... # the data, we want make predictions on
cl = SVC(...)
cl.set_params(**params)
predictions = cl.predict(data)
Run Code Online (Sandbox Code Playgroud)
如果我这样做,我会得到NonFittedError以下的堆栈跟踪:
File "C:\Users\viacheslav\Python\Python36-32\lib\site-packages\sklearn\svm\base.py", line 548, in predict
y = super(BaseSVC, self).predict(X)
File "C:\Users\viacheslav\Python\Python36-32\lib\site-packages\sklearn\svm\base.py", line 308, in predict
X = …Run Code Online (Sandbox Code Playgroud) 我有X_train和y_train作为2 numpy.ndarrays的大小分别为(32561,108)和(32561,)。
每次我调用适合GaussianProcessClassifier的函数时,都会收到内存错误。
>>> import pandas as pd
>>> import numpy as np
>>> from sklearn.gaussian_process import GaussianProcessClassifier
>>> from sklearn.gaussian_process.kernels import RBF
>>> X_train.shape
(32561, 108)
>>> y_train.shape
(32561,)
>>> gp_opt = GaussianProcessClassifier(kernel=1.0 * RBF(length_scale=1.0))
>>> gp_opt.fit(X_train,y_train)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/retsim/.local/lib/python2.7/site-packages/sklearn/gaussian_process/gpc.py", line 613, in fit
self.base_estimator_.fit(X, y)
File "/home/retsim/.local/lib/python2.7/site-packages/sklearn/gaussian_process/gpc.py", line 209, in fit
self.kernel_.bounds)]
File "/home/retsim/.local/lib/python2.7/site-packages/sklearn/gaussian_process/gpc.py", line 427, in _constrained_optimization
fmin_l_bfgs_b(obj_func, initial_theta, bounds=bounds)
File "/home/retsim/anaconda2/lib/python2.7/site-packages/scipy/optimize/lbfgsb.py", line 199, in fmin_l_bfgs_b
**opts) …Run Code Online (Sandbox Code Playgroud) classification ×10
python ×5
scikit-learn ×4
data-mining ×2
matlab ×2
dataset ×1
distance ×1
java ×1
k-means ×1
knn ×1
numpy ×1
pandas ×1
pca ×1
svm ×1
weka ×1