我对大约80个项目进行了调查,主要是项目是平衡的(更高的分数表示更好的结果),但其中大约20个是负面的平衡,我需要找到一种方法来反转在R中负面平衡的那些.我是完全失去了如何这样做.我绝对是一个R初学者,这可能是一个愚蠢的问题,但是有人能指出我的代码方向吗?
如果多个文档具有相同的分数,是否可以实现elasticsearch搜索结果的可靠分页?
我在弹性搜索中尝试自定义评分.我尝试的许多得分表达式产生结果集,其中许多文档具有相同的分数.每次尝试时它们似乎都以相同的顺序出现,但可以保证吗?
AFAIU它不能,特别是如果集群中有多个分片.具有相同分数的文件.给定的elasticsearch查询以随机,非确定性顺序返回,即使基础数据库不发生更改(因此分页不可靠),也可以在同一查询的调用之间进行更改,除非以下其中一项成立:
function_score
用来保证每个文档的分数是唯一的(例如,通过使用唯一的数字字段).sort
并保证排序定义总顺序(例如,如果其他条件相同则使用唯一字段作为后备).任何人都可以确认(并可能指出一些参考)?
如果我知道只有一个主要分片没有任何副本,这会改变吗(参见其他类似的问题:对于具有相同分数的文档,主/副本的结果排序不一致)?例如,如果我保证有一个分片并且在同一查询的两次调用之间数据库没有变化,那么该查询将以相同的顺序返回结果?
还有什么其他选择(如果有的话)?
是否有人成功地覆盖了查询中文档的评分,以便可以通过自己的函数确定术语与字段内容的“相关性”?如果是这样,是通过实现CustomScoreQuery并覆盖 customScore(int, float, float) 吗?我似乎找不到一种方法来构建自定义排序或自定义评分器,可以将精确术语匹配的排名远远高于其他前缀术语匹配。任何建议,将不胜感激。
我正在构建一个重复检测器,并且我已经确定了一些与重复相关的因素:
我可以轻松获得这些因素中任何一个的 0-1 值,但我遇到的问题是如何将这些因素组合成一个聚合值。
因此,例如,如果长度准确并且标题非常相似,即使引文相当不同,我也可能会认为它是重复的,因为这个语料库中的引文很混乱。或者你可以想象类似的事情(长度关闭,但其他因素开启;所有因素都很好,但不是很好;等等)。
最终我想做的是让系统识别可能重复的文档(这部分很简单),然后我说是或否。当我对这些重复项进行投票时,它会确定有效的重复项应该得到什么样的分数,并学习如何在没有我的同意或反对的情况下继续进行。
我正在努力更好地理解lucene如何评分我的搜索,以便我可以对我的搜索配置或文档内容进行必要的调整.
以下是分数细分的一部分.
产品:
0.34472802 = queryWeight, product of:
2.2 = boost
7.880174 = idf(docFreq=48, maxDocs=47667)
0.019884655 = queryNorm
1.9700435 = fieldWeight in 14363, product of:
1.0 = tf(freq=1.0), with freq of:
1.0 = termFreq=1.0
7.880174 = idf(docFreq=48, maxDocs=47667)
0.25 = fieldNorm(doc=14363)
0.26806915 = (MATCH) max of:
0.07832639 = (MATCH) weight(shortDescription:tires^1.1 in 14363) [DefaultSimilarity], result of:
0.07832639 = score(doc=14363,freq=1.0 = termFreq=1.0
Run Code Online (Sandbox Code Playgroud)
我理解如何计算提升,因为这是我的配置值
但是如何计算idf(7.880174 = idf值).
根据lucene,idf公式为:idf(t)= 1 + log(numDocs /(docFreq + 1))
我检查了核心管理控制台,发现我的docFreq = maxDocs = 47667.
使用lucene的公式,我无法计算预期的7.880174.相反,我得到:idf = 3.988 = …
SAS Enterprise Miner具有称为"分数代码节点"的东西.此节点将所有先前的代码(即创建新变量,输入缺失值,运行模型等)应用于完全未触及的数据集.除了使用保持样本(即测试数据)之外,我如何在R中执行此操作?
http://scikit-learn.org/stable/modules/ generated/sklearn.grid_search.GridSearchCV.html(供参考)
x = [[2], [1], [3], [1] ... ] # about 1000 data
grid = GridSearchCV(KernelDensity(), {'bandwidth': np.linspace(0.1, 1.0, 10)}, cv=10)
grid.fit(x)
Run Code Online (Sandbox Code Playgroud)
当我使用 GridSearchCV 而不指定像 之类的评分函数时, grid.scorer_ 的值为 。你能解释一下 _passthrough_scorer 是什么样的函数吗?
除此之外,我想将评分函数更改为mean_squared_error或其他函数。
grid = GridSearchCV(KernelDensity(), {'bandwidth': np.linspace(0.1, 1.0, 10)}, cv=10, scoring='mean_squared_error')
Run Code Online (Sandbox Code Playgroud)
但是 grid.fit(x) 行总是给我这个错误消息:
TypeError: __call__() missing 1 required positional argument: 'y_true'
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何将 y_true 赋予该函数,因为我不知道真实的分布。您能告诉我如何更改评分函数吗?我感谢您的帮助。
我正在使用 cross_val_score() 函数来计算R2
拟合系数。这是我的代码:
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import cross_val_score
X = data.iloc[:,0:13]
y = data.iloc[:,13]
lin = LinearRegression()
MSE = cross_val_score(lin,X,y,scoring = 'neg_mean_squared_error',cv = 10)
MSE
array([ -9.28694671, -14.15128316, -14.07360615, -35.20692433,
-31.88511666, -19.83587796, -9.94726918, -168.37537954,
-33.32974507, -10.96041068])
MSE.mean()
-34.705255944525462
R2= cross_val_score(lin,X,y,cv = 10)
R2
array([ 0.73376082, 0.4730725 , -1.00631454, 0.64113984, 0.54766046,
0.73640292, 0.37828386, -0.12922703, -0.76843243, 0.4189435 ])
R2.mean()
0.20252899006052702
Run Code Online (Sandbox Code Playgroud)
我发现这些结果非常奇怪,特别是R2
结果:
R2
分数非常“分散”。我执行相同的回归任务并使用“Rapidminer”计算分数,我得到了更多“逻辑”结果:
对来自 Keras 模型的 Multiclass 输出使用自定义评分会为 cross_val_score 或 GridSearchCV 返回相同的错误,如下所示(它在 Iris 上,因此您可以直接运行它进行测试):
import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split, cross_val_score, GridSearchCV
from keras.models import Sequential
from keras.layers import Dense
from keras.utils import to_categorical
from keras.wrappers.scikit_learn import KerasClassifier
iris = datasets.load_iris()
X= iris.data
Y = to_categorical(iris.target)
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, train_size=0.8, random_state=1000)
def create_model(optimizer='rmsprop'):
model = Sequential()
model.add(Dense(8,activation='relu',input_shape = (4,)))
model.add(Dense(3,activation='softmax'))
model.compile(optimizer = optimizer,
loss='categorical_crossentropy',
metrics=['accuracy'])
return model
model = KerasClassifier(build_fn=create_model,
epochs=10,
batch_size=5,
verbose=0) …
Run Code Online (Sandbox Code Playgroud) model = sklearn.model_selection.GridSearchCV(
estimator = est,
param_grid = param_grid,
scoring = 'precision',
verbose = 1,
n_jobs = 1,
iid = True,
cv = 3)
Run Code Online (Sandbox Code Playgroud)
在 中sklearn.metrics.precision_score(y, y_pred,pos_label=[0])
,我可以指定正标签,如何在 GridSearchCV 中也指定它?
如果无法指定,使用自定义评分时,如何定义?
我试过这个:
custom_score = make_scorer(precision_score(y, y_pred,pos_label=[0]),
greater_is_better=True)
Run Code Online (Sandbox Code Playgroud)
但我有错误:
NameError: name 'y_pred' is not defined
Run Code Online (Sandbox Code Playgroud) scoring ×10
scikit-learn ×4
grid-search ×3
lucene ×2
python ×2
r ×2
keras ×1
pagination ×1
python-3.x ×1
reverse ×1
solr ×1