我正在训练支持向量机(SVM).每个训练矢量包括2个特征,这些特征在数量上相等并且具有相反的符号,即F1 = -F2.
这样做有什么意义吗?
其中一个功能是多余的,更好的删除?
以上的答案是否依赖于使用的内核?我目前正在使用高斯/径向基函数(RBF)内核.
我需要实现SVM数字分类器的概念.它应该是我在画布中写入的分类输入的简单.但我需要从头开始实施.语言并不重要.
任何人都可以一步一步地指导我如何做到这一点.任何材料链接都会有所帮助.但我需要一些与实践相关的东西而不是理论.因为我已经阅读了一些关于它的理论文章.并且有基本的想法它应该如何工作,但仍然有一些麻烦如何将这些想法转换为现实生活中的例子.
非常感谢.
我正在使用scikit-learn来构建一个由svm训练和测试的样本分类器.现在我想分析分类器并找到explain_variance_score,但我不明白这个分数.例如,我得到了clf的分类报告,它看起来像这样......
precision recall f1-score support
0.0 0.80 0.80 0.80 10
1.0 0.80 0.80 0.80 10
avg / total 0.80 0.80 0.80 20
Run Code Online (Sandbox Code Playgroud)
还不错,但EVS只是0.2......有时-0.X...... 它怎么会发生这种情况呢?拥有一个好的EVS是否重要?也许有人可以解释我这个......
Y_true和Y_pred:
[ 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0.]
[ 1. 1. 1. 1. 1. 0. 0. 1. 1. 1. 1. 0. 0. 0. 0. 0. 1. 0.
0. 0.]
Run Code Online (Sandbox Code Playgroud) 如何使用libsvm实现一对一多类分类?请帮我解决这个问题.
我还从这个答案中读到了一对一的方法...... 使用Matlab进行交叉验证的多类SVM的完整示例[关闭]
我的测试数据:功能和最后一列是标签
D = [
1 1 1 1 1
1 1 1 9 1
1 1 1 1 1
11 11 11 11 2
11 11 11 11 2
11 11 11 11 2
30 30 30 30 3
30 30 30 30 3
30 30 30 30 3
60 60 60 60 4
60 60 60 60 4
60 60 60 60 4
];
Run Code Online (Sandbox Code Playgroud)
我的测试数据是
inputTest = [
1 1 1 1
11 11 11 10 …Run Code Online (Sandbox Code Playgroud) 我正在处理数据并希望为这些数据生成异常检测模型。该数据仅包含三个特征:Latitude、Longitude和Speed。我将它标准化,然后应用t-SNE然后再次标准化。有没有标记或目标数据。所以,它应该是一个无监督的异常检测。
我无法共享数据,因为它是私有的。但是,看起来是这样的:

数据中存在一些异常值,例如异常值:

这是数据的最终形状:

如您所见,数据有点复杂。当我手动搜索异常实例时(通过查看特征值),我观察到红色圆圈内的实例(下图中)应该被检测为异常。
红色区域内的实例应该是异常的:

我曾经OneClassSVM检测异常。这里是参数;
nu = 0.02
kernel = "rbf"
gamma = 0.1
degree = 3
verbose = False
random_state = rng
Run Code Online (Sandbox Code Playgroud)
和模型;
# fit the model
clf = svm.OneClassSVM(nu=nu, kernel=kernel, gamma=gamma, verbose=verbose, random_state=random_state)
clf.fit(data_scaled)
y_pred_train = clf.predict(data_scaled)
n_error_train = y_pred_train[y_pred_train == -1].size
Run Code Online (Sandbox Code Playgroud)
这是我最后得到的:

这是检测到的异常OneClassSVM和红色实例被检测为异常:

因此,如您所见,该模型将许多实例预测为异常,但实际上,这些实例中的大多数应该是正常的。
我为nu,gamma和尝试了不同的参数值degree。但是,我找不到合适的决策线来仅检测真正的异常。
我正在尝试使用 sklearn 将 sveveral 文本数据分为 3 个类别。但我得到
“属性错误:未找到下限”
跑步时。
代码:
train, test = train_test_split(df, random_state=42, test_size=0.3, shuffle=True)
X_train = train.contents
X_test = test.contents
Y_train = train.category
Y_test = test.category
clf_svc = Pipeline([('vect', CountVectorizer()),
('tfidf', TfidfVectorizer(tokenizer=',', use_idf=True, stop_words="english")),
('clf', OneVsRestClassifier(LinearSVC(), n_jobs=1)),
])
clf_svc = clf_svc.fit(X_train, Y_train)
predicted_svc = clf_svc(X_test)
print(np.mean(predicted_svc == Y_test))
Run Code Online (Sandbox Code Playgroud)
数据框 (df) 由 2 列组成:内容(长文本数据)和类别(文本数据)。内容是抓取的文本,因此包含数十或数百个单词,类别是单个单词,例如“A”,“B”。
我已经在 stackoverflow 中检查了过去的问题,但我无法解决发生的这个错误。
我很高兴知道解决方案或代码本身的问题。
任何建议和答案将不胜感激。
提前致谢。
python machine-learning svm scikit-learn text-classification
我只是数据分析的初学者。我想使用“交叉验证网格搜索方法”来确定径向基函数 (RBF) 内核 SVM 的参数 gamma 和 C。我不知道应该将数据放在这段代码的哪里,也不知道我的数据类型是什么应该使用(训练或目标数据)?
对于SVR
import numpy as np
import pandas as pd
from math import sqrt
from sklearn.tree import DecisionTreeRegressor
import matplotlib.pyplot as plt
from sklearn.ensemble import AdaBoostRegressor
from sklearn.metrics import mean_squared_error,explained_variance_score
from TwoStageTrAdaBoostR2 import TwoStageTrAdaBoostR2 # import the two-stage algorithm
from sklearn import preprocessing
from sklearn import svm
from sklearn.svm import SVR
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import classification_report
from matplotlib.colors import Normalize
from sklearn.svm import SVC
# Data import (source)
source= pd.read_csv(sourcedata) …Run Code Online (Sandbox Code Playgroud) data-visualization svm data-analysis scikit-learn grid-search
我安装了 numpy 和 scipy。我也安装了sklearn但无法导入它。请看图片。