我正在寻找一种方法来检测两个(相似)图像中的哪一个更清晰.
我认为这可以使用一些整体锐度的度量并产生分数(假设的例子:image1的清晰度得分为9,image2的清晰度得分为7;因此image1更清晰)
我已经对锐度检测/评分算法进行了一些搜索,但只是遇到了可以提高图像清晰度的算法.
有没有人做过这样的事情,或者有任何有用的资源/线索?
我将在webapp的上下文中使用此功能,因此首选PHP或C/C++.
我正在聚集大约100条记录的样本(未标记)并尝试使用grid_search来评估具有各种超参数的聚类算法.我正在使用得分silhouette_score
很好.
在这里,我的问题是,我并不需要使用的交叉验证方面GridSearchCV
/ RandomizedSearchCV
,但我不能找到一个简单GridSearch
/ RandomizedSearch
.我可以写我自己,但ParameterSampler
和ParameterGrid
对象是非常有用的.
我的下一步将是子类化BaseSearchCV
并实现我自己的_fit()
方法,但认为值得问一下,有更简单的方法来做到这一点,例如通过传递一些东西到cv
参数?
def silhouette_score(estimator, X):
clusters = estimator.fit_predict(X)
score = metrics.silhouette_score(distance_matrix, clusters, metric='precomputed')
return score
ca = KMeans()
param_grid = {"n_clusters": range(2, 11)}
# run randomized search
search = GridSearchCV(
ca,
param_distributions=param_dist,
n_iter=n_iter_search,
scoring=silhouette_score,
cv= # can I pass something here to only use a single fold?
)
search.fit(distance_matrix)
Run Code Online (Sandbox Code Playgroud) 我正在浏览网页寻找索引和搜索框架,并偶然发现索尔.我们绝对需要的功能是根据命中包含的字段来提升结果.
一个小例子:
考虑这样的记录:
<movie>
<title>The Dark Knight</title>
<alternative_title>Batman Begins 2</alternative_title>
<year>2008</year>
<director>Christopher Nolan</director>
<plot>Batman, Gordon and Harvey Dent are forced to deal with the chaos unleashed by an anarchist mastermind known only as the Joker, as it drives each of them to their limits.</plot>
</movie>
Run Code Online (Sandbox Code Playgroud)
我想例如结合title
,alternative_title
和plot
领域进入一个搜索领域,这是不看的Solr/Lucene的文档和教程后,太难了.
然而,我也希望那些受欢迎的电影获得的title
分数高于击中的分数,alternative_title
而那些依次命中的分数应高于该plot
领域的命中率.
有没有办法在XML中表明这种评分,还是我们需要开发一些自定义评分算法?
还请注意,我给出的示例是虚构的,真实数据可能包含100多个字段.
所以我有这个完全在客户端上运行的游戏.除了下载初始脚本以玩游戏之外,没有服务器交互.无论如何,在游戏结束时,我希望客户端将我应该在服务器数据库中更新的分数发回给我.现在我开始接受这样一个事实,即地球上没有任何办法我可以将其隐藏起来并将分数保持不变.但我想知道,直到我能在多大程度上修改整个过程,黑客操纵正在发送的数据几乎变得不可行.我肯定不希望得分作为客户端机器的纯文本发送,我不希望我的服务器执行复杂的解密算法.什么是最好的方式,因此实现相当大的安全性,每个汤姆迪克和哈里不破解分数...我希望有人可以提供一个很好的小方法,我可以工作...... :)谢谢
所以我的理想结果应该是 - >得到一个不受信任的一方(玩家)计算(得分)的可信结果!
-编辑-
有人告诉我一些关于在图片获取请求中隐藏数据的事情.就像,我在画布上实现这个游戏(html5).所以他在比赛结束时让我告诉我从我的服务器上取一个游戏而不是图像,他们的请求应该包含哈希分数.我并不完全理解整个过程,但如果你能解释一下,那真的很高兴!:)
coda ^所以你可以很好地掩盖请求
shouvik我该怎么做!?
coda ^您可以撰写要提交的校验和.像12312312a12313a232是你的md5,其中包含分数.像画布一样将资产带进画布
coda ^ server.com/images/md5_hash_of_score/congratulations.png
coda ^你可以通过htaccess重写服务器端
我正在尝试验证用户提供的一系列单词.我正在尝试提出一个评分系统,该系统将确定一系列单词确实是有效单词的可能性.
假设以下输入:
xxx yyy zzz
Run Code Online (Sandbox Code Playgroud)
我要做的第一件事就是根据我拥有的单词数据库单独检查每个单词.所以,让我们说这xxx
是在数据库中,所以我们100%确定它是一个有效的单词.然后让我们说yyy
数据库中不存在,但其拼写的可能变化存在(比方说yyyy
).我们不给出yyy
100%的分数,但可能更低(让我们说90%).然后zzz
在数据库中根本不存在.所以,zzz
得分为0%.
所以我们有这样的事情:
xxx = 100%
yyy = 90%
zzz = 0%
Run Code Online (Sandbox Code Playgroud)
进一步假设用户要么要么:
总的来说,确定xxx yyy zzz
一系列有效词的置信度得分的好评分系统是什么?我不是在寻找任何过于复杂的东西,但获得平均分数似乎并不合适.如果单词列表中的某些单词有效,我认为它增加了数据库中未找到的单词也是实际单词的可能性(这只是数据库的一个限制,它不包含该特定单词).
注意:输入通常至少为2个单词(大多数为2个单词),但可以是3,4,5(在极少数情况下甚至更多).
我正在寻找的是ElasticSearch(Lucene)的默认评分机制如何真正起作用的简单清晰的解释.我的意思是,它是否使用Lucene得分,或者它可能使用自己的得分?
例如,我想通过例如"名称"字段搜索文档.我使用.NET NEST客户端来编写查询.我们来考虑这种类型的查询:
IQueryResponse<SomeEntity> queryResult = client.Search<SomeEntity>(s =>
s.From(0)
.Size(300)
.Explain()
.Query(q => q.Match(a => a.OnField(q.Resolve(f => f.Name)).QueryString("ExampleName")))
);
Run Code Online (Sandbox Code Playgroud)
这被转换为这样的JSON查询:
{
"from": 0,
"size": 300,
"explain": true,
"query": {
"match": {
"Name": {
"query": "ExampleName"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
搜索执行的文档大约有110万个.我得到的回报是(这只是结果的一部分,我自己格式化):
650 "ExampleName" 7,313398
651 "ExampleName" 7,313398
652 "ExampleName" 7,313398
653 "ExampleName" 7,239194
654 "ExampleName" 7,239194
860 "ExampleName of Something" 4,5708737
Run Code Online (Sandbox Code Playgroud)
其中第一个字段只是一个Id,第二个是ElasticSearch执行搜索的名称字段,第三个是得分.
如您所见,ES索引中有许多重复项.由于一些已发现的文档具有不同的分数,尽管它们完全相同(只有不同的Id),我得出结论,不同的分片在整个数据集的不同部分上进行搜索,这使我得出结论,分数在某种程度上基于整体给定分片中的数据,而不仅仅是搜索引擎实际考虑的文档.
问题是,这个得分究竟是如何运作的?我的意思是,你能告诉我/给我看/给我一个确切的公式来计算ES发现的每个文件的分数吗?最终,这个评分机制如何改变?
我有一个网站,用户可以"喜欢"和"不喜欢"的项目.
因此,对于每个项目,我都有数据,例如"喜欢"的总数和"赞"的总投票数百分比.
我想计算一个只给用户显示的分数.使用只有%不起作用,因为即使item_A可能有90%的"喜欢",而item_B可能有80%的"喜欢",如果item_B有10,000个总票数,item_B仍应排在item_A前面,而item_A只有总票数为1,000.
同样地,仅使用总"喜欢"是行不通的,因为虽然项目可能具有大量"喜欢",但如果"喜欢"的百分比低,则不应该排名很高.
从上面的数据中创建单个分数的好算法是什么?
理想情况下,分数应该以某种方式"有意义"或"标准化".例如,如果我去IMDB,我看到一部电影得分为8/10,我立即知道这是一部好电影.另一方面,如果我看到得分为1,370,我不一定知道这是好还是坏.
问题
我试图用scikit学习的LogisticRegressionCV
同roc_auc_score
为得分度量.
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_auc_score
clf = LogisticRegressionCV(scoring=roc_auc_score)
Run Code Online (Sandbox Code Playgroud)
但是当我尝试拟合模型(clf.fit(X, y)
)时,它会抛出错误.
ValueError: average has to be one of (None, 'micro', 'macro', 'weighted', 'samples')
Run Code Online (Sandbox Code Playgroud)
这很酷.很明显发生了什么:roc_auc_score
需要根据average
指定的参数调用,根据其文档和上面的错误.所以我试过了.
clf = LogisticRegressionCV(scoring=roc_auc_score(average='weighted'))
Run Code Online (Sandbox Code Playgroud)
但事实证明,roc_auc_score
单独使用可选参数无法调用,因为这会引发另一个错误.
TypeError: roc_auc_score() takes at least 2 arguments (1 given)
Run Code Online (Sandbox Code Playgroud)
题
关于我如何以一种可以为评分函数指定参数的方式使用roc_auc_score
评分指标的想法LogisticRegressionCV
?
我在scikit-learn的GitHub回购中找不到关于这个问题的SO问题或者对这个问题的讨论,但是肯定有人之前遇到过这个问题吗?
我试图确定一个测验对象的"困难".
我的最终目标是能够为任何测验创建"难度分数"(DS).这将允许我准确地比较一个测验与另一个测验,尽管由不同的问题/答案组成.
在创建我的测验对象时,我为每个问题分配一个"难度指数"(DI),这是一个1-15的数字.
15 =最困难
1 =最不困难
现在衡量这个"难度得分"的一种直接的方法可能是将每个问题的"难度指数"加起来然后除以测验的最大可能"难度指数".(例如16/30 = 53.3%难度)
但是,我还有多个与每个问题相关的"加权"属性.这些重量也是1-5的等级.
5 =影响最大
1 =影响最小
我有(2)而不是更常见的(1)的原因是我可以容纳如下的场景......
如果向学生提出一个非常困难的问题(DI = 15)并且学生回答"不正确",那么不要让他们的分数受到如此大的伤害,但如果他们得到"正确",那么它会大大提高他们的分数.我将这些称为"正"(PW)和"负"(NW)权重.
测验示例A:
问题1:DI = 1 | PW = 3 | NW = 3
问题2:DI = 1 | PW = 3 | NW = 3
问题3:DI = 1 | PW = 3 | NW = 3
问题4:DI = 15 | PW = 5 | NW = 1
测验例B:
问题1:DI = 1 …
在 Lucene 6.6.0 及更高版本中,不推荐使用字段级索引时间提升。该文件指出:
不推荐使用索引时间提升,请将索引时间评分因素索引到文档值字段中,并在查询时使用例如将它们与分数组合。函数分数查询。
以前会在索引时提升一个字段,如下所示:
Field title = new Field(PaperDAO.LUCENE_FIELD_TITLE, titleStr, fieldType);
title.setBoost(3.00f);
document.add(title);
Field authors = new Field(PaperDAO.LUCENE_FIELD_AUTHOR, StringEscapeUtils.unescapeHtml4(this.getAuthorsForLucene()), fieldType);
authors.setBoost(10.00f);
document.add(authors);
Run Code Online (Sandbox Code Playgroud)
我不明白建议的 FunctionScoreQuery 如何是字段级别提升的合适替代品,因为只有一个现有的 Query 和一个 DoubleValuesSource 表示可能许多字段中的一个的提升值,因此构造了一个 FunctionScoreQuery :
// INDEX TIME
Field title = new Field(PaperDAO.LUCENE_FIELD_TITLE, titleStr, fieldType);
document.add(title);
document.add(new FloatDocValuesField(PaperDAO.LUCENE_FIELD_TITLE + "_boost", 3.00f));
// QUERY TIME
new FunctionScoreQuery(query, DoubleValuesSource.fromFloatField(PaperDAO.LUCENE_FIELD_TITLE + "_boost"))
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下 Lucene >= 6.6.0 中 Field#setBoost @ index time 的适当替换吗?我们是否应该在查询时枚举所有可能的字段并应用相关的提升?如果是这样,该查询是如何构造的?
scoring ×10
algorithm ×3
lucene ×3
math ×2
python ×2
scikit-learn ×2
arguments ×1
cryptography ×1
database ×1
detection ×1
function ×1
javascript ×1
search ×1
solr ×1
solr-boost ×1
voting ×1