我正在对一些数据进行kNN分类。我有按 80/20 的比例随机分割训练集和测试集的数据。我的数据如下所示:
[ [1.0, 1.52101, 13.64, 4.49, 1.1, 71.78, 0.06, 8.75, 0.0, 0.0, 1.0],
[2.0, 1.51761, 13.89, 3.6, 1.36, 72.73, 0.48, 7.83, 0.0, 0.0, 2.0],
[3.0, 1.51618, 13.53, 3.55, 1.54, 72.99, 0.39, 7.78, 0.0, 0.0, 3.0],
...
]
Run Code Online (Sandbox Code Playgroud)
矩阵最后一列中的项目是类:1.0、2.0 和 3.0特征标准化
后,我的数据如下所示:
[[-0.5036443480260487, -0.03450760227559746, 0.06723230162846759, 0.23028986544844693, -0.025324623254270005, 0.010553065215338569, 0.0015136367098358505, -0.11291235596166802, -0.05819669234942126, -0.12069793876044387, 1.0],
[-0.4989050339943617, -0.11566537753097901, 0.010637426608816412, 0.2175704556290625, 0.03073267976659575, 0.05764598316498372, -0.012976783512350588, -0.11815839520204152, -0.05819669234942126, -0.12069793876044387, 2.0],
...
]
Run Code Online (Sandbox Code Playgroud)
我用于标准化的公式:
(X - avg(X)) / (max(X) - min(X))
Run Code Online (Sandbox Code Playgroud)
我对K …
classification machine-learning normalization nearest-neighbor knn
您好,我正在尝试在 Sklearn 中使用 fit_params (用于 GradientBoostingClassifier 上的sample_weight)和 VotingClassifier 进行随机搜索,因为数据集不平衡。有人可以给我建议和可能的代码示例吗?
我当前无法工作的代码如下:
random_search = RandomizedSearchCV(my_votingClassifier, param_distributions=param_dist,
n_iter=n_iter_search, n_jobs=-1, fit_params={'sample_weight':y_np_array})
Run Code Online (Sandbox Code Playgroud)
错误:
TypeError: fit() got an unexpected keyword argument 'sample_weight'
Run Code Online (Sandbox Code Playgroud) 我正在用于sklearn.svm.SVC分类问题。在对我的数据进行训练后,我想通过多个值循环偏差(即通常的符号(wx + b)SVM方程中的b项),以产生ROC曲线。(我已经执行了交叉验证并选择了我的超参数,因此这是用于测试的)。
我尝试使用该.intercept_属性,但这并没有改变我从中得到的结果.predict()......是否有其他方法可以改变偏差项?
我有可能恢复支持向量,然后实现我自己的.predict()函数,并改变偏差,但这似乎是一种相当严厉的方法。
我有一个返回Observation带有多个记分器的对象的函数,如何将其集成到自定义 sklearn 记分器中?我将其定义为:
class Observation():
def __init__(self):
self.statValues = {}
self.modelName = ""
def setModelName(self, nameOfModel):
self.modelName = nameOfModel
def addStatMetric(self, metricName,metricValue):
self.statValues[metricName] = metricValue
Run Code Online (Sandbox Code Playgroud)
自定义分数的定义如下:
def myAllScore(y_true, y_predicted):
return Observation
my_scorer = make_scorer(myAllScore)
Run Code Online (Sandbox Code Playgroud)
这可能看起来像
{ 'AUC_R': 0.6892943119440752,
'Accuracy': 0.9815382629183745,
'Error rate': 0.018461737081625407,
'False negative rate': 0.6211453744493393,
'False positive rate': 0.0002660016625103907,
'Lift value': 33.346741089307166,
'Precision J': 0.9772727272727273,
'Precision N': 0.9815872808592603,
'Rate of negative predictions': 0.0293063938288739,
'Rate of positive predictions': 0.011361068973307943,
'Sensitivity (true positives rate)': 0.3788546255506608,
'Specificity …Run Code Online (Sandbox Code Playgroud) 我正在写一篇关于冰川变化的论文。我对 Landsat 8 图像进行了监督分类,我想计算每个类别中有多少像素。顺便我想做一个图表。
但我卡住了,我的代码出错了。我尝试使用带有指定参数的 ui.Chart.image.byClass() 方法,但不起作用。
我的代码:
var img = ee.Image('LANDSAT/LC8_L1T_TOA/LC81940282016238LGN00') ;
// Add pseudocolor image
Map.addLayer(img, {bands: ['B6', 'B5', 'B4'] }, 'Pseudocolor image' ) ;
// Training points for classification - Point geometries
var points = [class1,class2,class3, class4, class5] ;
var trainingPoints = ee.FeatureCollection(points) ;
var training = img.sampleRegions(trainingPoints, ['class'] ,30) ;
var trained = ee.Classifier.minimumDistance().train(training, 'class' ) ;
var classified = img.classify(trained) ;
var palette = ['red','red', '#696969' , '#90EE90' , '#008000' ] ;
Map.addLayer(classified, {min: 0 …Run Code Online (Sandbox Code Playgroud) 问题:
\n\n查找域名的二元组、三元组和二元组分数。我有一个数据集,我想使用一些简单的分类来区分它们是否是 dga 域。所以我想从使用二元组、三元组和熵开始。
\n\n我尝试过的:
\n\nfrom nltk import ngrams\nsentence = 'some big sentence'\nn = 2\nsixgrams = ngrams(sentence.split(), n)\nfor grams in sixgrams:\nprint grams\nRun Code Online (Sandbox Code Playgroud)\n\n这里我得到了一个句子的二元组。但我的意图不是这个。
\n\n我想转换
\n\n示例域:google.co.in
\n\nbigrams\n\n[\xe2\x80\x98$g\xe2\x80\x99, \xe2\x80\x98go\xe2\x80\x99, \xe2\x80\x98oo\xe2\x80\x99, \xe2\x80\x98og\xe2\x80\x99, \xe2\x80\x98gl\xe2\x80\x99, \xe2\x80\x98le\xe2\x80\x99, \xe2\x80\x98e$\xe2\x80\x99, \xe2\x80\x98$c\xe2\x80\x99, \xe2\x80\x98co\xe2\x80\x99, \xe2\x80\x98o$\xe2\x80\x99, \xe2\x80\x98$i\xe2\x80\x99, \xe2\x80\x98in\xe2\x80\x99, \xe2\x80\x98n$\xe2\x80\x99]\ntrigrams\n\n[\xe2\x80\x98$go\xe2\x80\x99, \xe2\x80\x98goo\xe2\x80\x99, \xe2\x80\x98oog\xe2\x80\x99, \xe2\x80\x98ogl\xe2\x80\x99, \xe2\x80\x98gle\xe2\x80\x99, \xe2\x80\x98le$\xe2\x80\x99, \xe2\x80\x98$co\xe2\x80\x99, \xe2\x80\x98co$\xe2\x80\x99, \xe2\x80\x98$in\xe2\x80\x99, \xe2\x80\x98in$\xe2\x80\x99]\nRun Code Online (Sandbox Code Playgroud)\n\n然后计算 bigrams_score。从中我可以用它来预测模块并进行分析。
\n\n谁能帮助我了解如何解决这个问题?
\n我有一个基本问题。据说我正在训练猫和狗的图像分类器。但我需要一个额外的功能。如果图像不属于任何类别,我如何才能知道它。我想到的一些选择是:
但我认为任何方法都不可行。
谁能建议我一种好的技术来对不属于我的训练类别的图像进行分类?
classification machine-learning neural-network deep-learning keras
在GPflow 网站上的多类分类教程中,稀疏变分高斯过程 (SVGP) 用于一维玩具示例。与所有其他 GPflow 模型的情况一样,SVGP 模型有一个方法predict_y(self, Xnew)可以返回点处保留数据的均值和方差Xnew。
从教程中可以清楚地看出,解压缩的第一个参数是三个类别(单元格和)predict_y中每一个类别的后验预测概率,如下图第二个面板中的彩色线所示。然而,作者没有详细说明可以从 中解压缩的第二个参数,即预测的方差。在回归设置中,它的解释对我来说很清楚,因为在这种情况下后验预测分布将是高斯分布。[7][8]predict_y
但我不明白这里的解释是什么。特别是,我想知道如何使用此度量来构建误差线,表示任何新数据点的类预测的不确定性。
我稍微修改了教程的代码,在下面的图中添加了一个附加面板:第三个面板以黑色显示最大标准差(从 获得的方差的平方根predict_y)。显然,它是衡量不确定性的一个很好的指标,而且最高可能值为 0.5 也可能并非巧合,但我找不到它的计算方式及其代表的含义。
此处包含所有代码的完整笔记本。
def plot(m):
f = plt.figure(figsize=(12,8))
a1 = f.add_axes([0.05, 0.05, 0.9, 0.5])
av = f.add_axes([0.05, 0.6, 0.9, 0.1])
a2 = f.add_axes([0.05, 0.75, 0.9, 0.1])
a3 = f.add_axes([0.05, 0.9, 0.9, 0.1])
xx = np.linspace(m.X.read_value().min()-0.3, m.X.read_value().max()+0.3, 200).reshape(-1,1)
mu, var = m.predict_f(xx)
mu, var = mu.copy(), var.copy()
p, v = m.predict_y(xx)
a3.set_xticks([]) …Run Code Online (Sandbox Code Playgroud) 问题标题说明了一切:如何使词袋模型更小?我使用随机森林和词袋功能集。我的模型大小达到 30 GB,并且我确信特征集中的大多数单词对整体性能没有贡献。
如何在不损失(太多)性能的情况下缩小大词袋模型?
nlp classification random-forest scikit-learn text-classification
我有一个分类问题,我想在 sklearn 中roc_auc使用该值cross_validate。我的代码如下。
from sklearn import datasets
iris = datasets.load_iris()
X = iris.data[:, :2] # we only take the first two features.
y = iris.target
from sklearn.ensemble import RandomForestClassifier
clf=RandomForestClassifier(random_state = 0, class_weight="balanced")
from sklearn.model_selection import cross_validate
cross_validate(clf, X, y, cv=10, scoring = ('accuracy', 'roc_auc'))
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误。
ValueError: multiclass format is not supported
Run Code Online (Sandbox Code Playgroud)
请注意,我roc_auc特别选择的是它同时支持binary和multiclass分类,如:https : //scikit-learn.org/stable/modules/model_evaluation.html
我也有二进制分类数据集。请让我知道如何解决此错误。
如果需要,我很乐意提供更多详细信息。
python classification machine-learning scikit-learn cross-validation
classification ×10
python ×5
scikit-learn ×5
google-earth ×1
gpflow ×1
grid-search ×1
javascript ×1
keras ×1
knn ×1
nlp ×1
nltk ×1
python-3.x ×1
scoring ×1