鉴于以下枚举:
public enum Position
{
Quarterback,
Runningback,
DefensiveEnd,
Linebacker
};
Run Code Online (Sandbox Code Playgroud)
是否有可能对命名常数进行分类,这样我可以将"四分卫"和"跑卫"标记为进攻位置,将"防守端"和"后卫"标记为防守位置?
我有一个我认为是一个简单的机器学习问题.
这是基本问题:我反复给出一个新对象和一个关于该对象的描述列表.例如:new_object:'bob'new_object_descriptions : ['tall','old','funny']. 然后,我必须使用某种机器学习来查找具有10个或更少相似描述的先前处理的对象,例如,past_similar_objects : ['frank','steve','joe']. 接下来,我有一个算法可以直接测量这些对象是否确实类似于bob,例如correct_objects : ['steve','joe']. 然后给分类器进行成功匹配的反馈训练.然后这个循环重复一个新对象.这是伪代码:
Classifier=new_classifier()
while True:
new_object,new_object_descriptions = get_new_object_and_descriptions()
past_similar_objects = Classifier.classify(new_object,new_object_descriptions)
correct_objects = calc_successful_matches(new_object,past_similar_objects)
Classifier.train_successful_matches(object,correct_objects)
Run Code Online (Sandbox Code Playgroud)
但是,有一些规定可能限制可以使用的分类器:
将有数百万个对象放入此分类器中,因此分类和培训需要能够很好地扩展到数百万个对象类型,并且仍然很快.我认为这取消了类似垃圾邮件分类器的资格,这种分类器只适用于两种类型:垃圾邮件或非垃圾邮件.(更新:如果这是一个问题,我可以将其缩小到数千个对象而不是数百万个.)
再次,当数百万个物体被分类时,我更喜欢速度,而不是准确性.
更新:分类器应根据过去训练的反馈返回10个(或更少)最相似的对象.没有这个限制,一个明显的作弊将是分类器可以只返回所有过去的对象:)
为此目的,什么是体面的,快速的机器学习算法?
注意:calc_successful_matches距离度量计算起来非常昂贵,这就是为什么我使用快速机器学习算法来尝试在实际进行昂贵的计算之前猜测哪些对象将会关闭.
python artificial-intelligence classification machine-learning neural-network
我正在使用sklearn包中的LogisticRegression,并且有一个关于分类的快速问题.我为我的分类器建立了一条ROC曲线,结果证明我的训练数据的最佳阈值大约为0.25.我假设创建预测时的默认阈值是0.5.如何进行10倍交叉验证时,如何更改此默认设置以了解模型的准确度?基本上,我希望我的模型能够为大于0.25但不是0.5的任何人预测"1".我一直在查看所有文档,我似乎无法到达任何地方.
在此先感谢您的帮助.
这个问题可能已得到解答,但我没有找到一个简单的答案.我使用Keras创建了一个convnet来对"辛普森一家"字符进行分类(这里是数据集).
我有20个类并给出一个图像作为输入,我返回字符名称.这很简单.我的数据集包含图片中主要字符的图片,并且只有字符的名称作为标签.
现在我想添加一个对象检测问题,即在图片中的字符周围绘制一个边界框并预测它是哪个字符.我不想使用滑动窗口,因为它真的很慢.所以我考虑使用更快的RCNN(github repo)或YOLO(github repo).我是否应该为训练集的每张图片添加边界框的坐标?有没有办法在没有给出训练集的坐标的情况下进行物体检测(并在我的测试中得到边界框)?
总之,我想创建一个简单的对象检测模型,我不知道是否有可能创建一个更简单的YOLO或更快的RCNN.
非常感谢您的帮助.
我目前正在使用 tensorflow 中的新 keras API 进行一个小型二进制分类项目。问题是几年前在 Kaggle.com 上发布的希格斯玻色子挑战的简化版本。数据集形状为 2000x14,其中每行的前 13 个元素构成输入向量,第 14 个元素是对应的标签。这是所述数据集的示例:
86.043,52.881,61.231,95.475,0.273,77.169,-0.015,1.856,32.636,202.068, 2.432,-0.419,0.0,0
138.149,69.197,58.607,129.848,0.941,120.276,3.811,1.886,71.435,384.916,2.447,1.408,0.0,1
137.457,3.018,74.670,81.705,5.954,775.772,-8.854,2.625,1.942,157.231,1.193,0.873,0.824,1
Run Code Online (Sandbox Code Playgroud)
我对机器学习和 tensorflow 比较陌生,但我熟悉更高层次的概念,例如损失函数、优化器和激活函数。我曾尝试根据在线发现的二元分类问题示例构建各种模型,但我在训练模型时遇到了困难。在训练期间,损失在同一时期内有时会增加,导致学习不稳定。准确率达到了 70% 左右的稳定水平。我曾尝试更改学习率和其他超参数,但无济于事。相比之下,我已经硬编码了一个完全连接的前馈神经网络,在同一问题上的准确率达到了 80-85% 左右。
这是我目前的模型:
import tensorflow as tf
from tensorflow.python.keras.layers.core import Dense
import numpy as np
import pandas as pd
def normalize(array):
return array/np.linalg.norm(array, ord=2, axis=1, keepdims=True)
x_train = pd.read_csv('data/labeled.csv', sep='\s+').iloc[:1800, :-1].values
y_train = pd.read_csv('data/labeled.csv', sep='\s+').iloc[:1800, -1:].values
x_test = pd.read_csv('data/labeled.csv', sep='\s+').iloc[1800:, :-1].values
y_test = pd.read_csv('data/labeled.csv', sep='\s+').iloc[1800:, -1:].values
x_train = normalize(x_train)
x_test = normalize(x_test)
model = tf.keras.Sequential()
model.add(Dense(9, input_dim=13, activation=tf.nn.sigmoid) …Run Code Online (Sandbox Code Playgroud) 我正在尝试制作一个为项目i选择评级(1-5)的分类器.对于每个项目i,我有一个向量x,包含大约40个与i有关的不同数量.我对每件商品都有金标准等级.根据x的某些功能,我想训练一个分类器给我一个与金标准非常接近的等级1-5.
我在分类器上看到的大部分信息只涉及二元决策,而我有一个评级决定.是否有常见的技术或代码库来处理这类问题?
我在一些群体中有一堆已经人为分类的文件.
是否有lda的修改版本,我可以用它来训练模型,然后用它来分类未知文档?
nlp classification machine-learning document-classification lda
在这个问题上,过去2-3周我一直在绞尽脑汁.我有一个多标签(不是多级)的问题,每个样品可以属于多个标签的.
我有大约450万个文本文档作为训练数据,大约100万个作为测试数据.标签大约35K.
我正在使用scikit-learn.对于特征提取我以前使用TfidfVectorizer它没有规模可言,我现在用的HashVectorizer这是更好的,但不是可扩展鉴于我有文件的数量.
vect = HashingVectorizer(strip_accents='ascii', analyzer='word', stop_words='english', n_features=(2 ** 10))
Run Code Online (Sandbox Code Playgroud)
SKlearn提供OneVsRestClassifier,我可以在其中提供任何估算器.对于多标签,我发现LinearSVC和SGDClassifier只能正常工作.根据我的基准,SGD在内存和时间方面都优于LinearSVC.所以,我有这样的事情
clf = OneVsRestClassifier(SGDClassifier(loss='log', penalty='l2', n_jobs=-1), n_jobs=-1)
Run Code Online (Sandbox Code Playgroud)
但是这有一些严重的问题:
classification machine-learning document-classification scikit-learn text-classification
我正在运行RTextTools包来构建文本分类模型.
当我准备预测数据集并尝试将其转换为矩阵时.我得到错误:
Error in if (attr(weighting, "Acronym") == "tf-idf") weight <- 1e-09 :
argument is of length zero
Run Code Online (Sandbox Code Playgroud)
我的代码如下:
table<-read.csv("traintest.csv",header = TRUE)
dtMatrix <- create_matrix(table["COMMENTS"])
container <- create_container(dtMatrix,
table$LIKELIHOOD_TO_RECOMMEND,
trainSize=1:5000,testSize=5001:10000,
virgin=FALSE)
model <- train_model(container, "SVM", kernel="linear", cost=1)
predictionData<-read.csv("rest.csv",header = TRUE)
**predMatrix <- create_matrix(predictionData["COMMENTS"],originalMatrix=dtMatrix)**
Error in if (attr(weighting, "Acronym") == "tf-idf") weight <- 1e-09 :
argument is of length zero
Run Code Online (Sandbox Code Playgroud)
错误是由最后一个代码(粗体)给出我尝试在谷歌搜索但没有看到一个明确的解决方案.
谢谢
我们知道我们可以在二元分类模型中的不平衡数据的拟合方法中传递一个类权重字典.我的问题是,当在输出层中仅使用1个节点进行sigmoid激活时,我们是否仍然可以在训练期间应用类权重?
model = Sequential()
model.add(Dense(64, activation='tanh',input_shape=(len(x_train[0]),)))
model.add(Dense(1, activation='sigmoid'))
model.compile(
optimizer=optimizer,
loss=loss,
metrics=metrics)
model.fit(
x_train, y_train,
epochs=args.e,
batch_size=batch_size,
class_weight={0: 1, 1: 3})
Run Code Online (Sandbox Code Playgroud) classification ×10
python ×3
keras ×2
scikit-learn ×2
c# ×1
enums ×1
lda ×1
nlp ×1
r ×1
regression ×1
tensorflow ×1
text-mining ×1