标签: training-data

OpenCV迭代随机森林训练

我正在使用随机森林算法作为我论文项目的分类器.训练集由数千个图像组成,并且对于每个图像,约2000个像素被采样.对于每个像素,我有成千上万的功能.由于我目前的硬件限制(8G的ram,可能可扩展到16G),我能够在内存中只为一个图像拟合样本(即每像素的特征).我的问题是:是否可以多次调用火车方法,每次使用不同的图像样本,并在每次调用时自动更新统计模型?我对变量重要性特别感兴趣,因为在我使用整个功能集训练完整的训练集之后,我的想法是将功能的数量从几十万减少到大约2000,只保留最重要的功能.

感谢Daniele的任何建议

opencv machine-learning training-data random-forest

6
推荐指数
1
解决办法
1665
查看次数

互联网文章和社交媒体的分层分类+主题模型训练数据

我想按主题对大量(100K到1M +)的小型互联网文章(推文,博客文章,新闻等)进行分类.为了实现这一目标,我一直在寻找标记的培训数据文档,我可以用它来构建分类器模型.为了使这篇文章最有用,以下是我发现的一些可能的来源:

a)www.freebase.com/internet/website/category?instances=

b)wikipedia-miner.cms.waikato.ac.nz(用于访问维基百科数据的工具包)

c)en.wikipedia.org/wiki/Wikipedia:Database_download

d)wiki.dbpedia.org/About(属于类别的SKOS格式主题关键字)

e)互联网搜索大型文章集,然后进行聚类和手动策划

问题1:是否有其他可提供标签培训文件的互联网资源?给定主题上的关键字集,尤其是加权集也很有用

理想情况下,我想构建一个分类器,该分类器将返回分层类别,并且随着更多兴趣/数据变得可用,可以在以后添加子主题细节.

问题2:是否存在分层结构(也可能是可扩展的)主题建模/分类框架?一个代码示例将特别受欢迎

非常感谢

更新:

路透社语料库第1卷(在RCV1-v2上搜索)它是从1990年代后期开始的大约80万路透社文章被人类分类为主题,行业和地区类别

一个学术联盟(LDC)分发各种语料库,包括由纽约时报编制的约1.5M标签文件:http: //catalog.ldc.upenn.edu/LDC2008T19

hierarchical-clustering nltk training-data topic-modeling scikit-learn

6
推荐指数
1
解决办法
1422
查看次数

Keras ImageDataGenerator很慢

我正在寻找在Keras上训练大于内存数据的最佳方法,并且目前注意到vanilla ImageDataGenerator往往比我希望的要慢.

我有两个网络训练Kaggle cat's vs dogs数据集(25000张图片):

1)这种方法正是以下代码:http://www.pyimagesearch.com/2016/09/26/a-simple-neural-network-with-python-and-keras/

2)与(1)相同,但使用ImageDataGenerator而不是将数据加载到内存中

注意:对于下面的内容,"预处理"意味着调整大小,缩放,展平

我在gtx970上找到以下内容:

对于网络1,每个时期需要约0秒.

对于网络2,如果在数据生成器中完成预处理,则每个时期需要大约36秒.

对于网络2,如果在数据生成器外部的第一遍中完成预处理,则每个时期需要约13秒.

这可能是ImageDataGenerator的速度限制(13s似乎是磁盘和RAM之间通常的10-100x差异......)?在使用Keras时,是否有更适合培训大于内存数据的方法/机制?例如,也许有办法让Keras中的ImageDataGenerator在第一个纪元后保存其处理过的图像?

谢谢!

generator training-data neural-network keras

6
推荐指数
1
解决办法
1925
查看次数

使用python sklearn增量训练随机森林模型

我使用以下代码来保存随机森林模型.我正在使用cPickle来保存训练有素的模型.当我看到新数据时,我可以逐步训练模型吗?目前,列车组有大约2年的数据.有没有办法在另外两年训练,并且(有点)将它附加到现有的已保存模型.

rf =  RandomForestRegressor(n_estimators=100)
print ("Trying to fit the Random Forest model --> ")
if os.path.exists('rf.pkl'):
    print ("Trained model already pickled -- >")
    with open('rf.pkl', 'rb') as f:
        rf = cPickle.load(f)
else:
    df_x_train = x_train[col_feature]
    rf.fit(df_x_train,y_train)
    print ("Training for the model done ")
    with open('rf.pkl', 'wb') as f:
        cPickle.dump(rf, f)
df_x_test = x_test[col_feature]
pred = rf.predict(df_x_test)
Run Code Online (Sandbox Code Playgroud)

编辑1:我没有计算能力来同时训练模型4年的数据.

python pickle training-data random-forest

6
推荐指数
2
解决办法
5926
查看次数

TensorFlow新的contrib.data.Dataset对象如何工作?

在TensorFlow中,旧的输入管道使用了一系列队列,并且线程将这些队列中的元素排入队列并从中排队.例如,string_input_producer文件名tf.train.batch的队列,作为批处理的队列等.

因此,在培训之前,您需要写:

coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(sess=sess, coord=coord)
Run Code Online (Sandbox Code Playgroud)

为了生成并启动填充所有这些队列的线程.


我已经从这个旧模型升级了我的数据输入管道,使用当前位于的新模型tf.contrib.data.TFRecordDataset来读取我用来训练的TFRecord文件.

我注意到我可以删除:

coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(sess=sess, coord=coord)
Run Code Online (Sandbox Code Playgroud)

代码行,输入管道仍然运行顺畅.

所以我的问题是:

新输入管道如何在引擎盖下工作?它根本不使用队列吗?或者它是否使用它们,并且只是自己启动它们?此外,如果它确实使用它们,是否有一种方法可以监控它们的完整程度,因为旧管道会自动执行,而新管道则没有?

training-data tensorflow

6
推荐指数
1
解决办法
262
查看次数

训练模型失败,因为'list'对象没有属性'lower'

我正在通过推文训练分类器以进行情绪分析.

代码如下:

df = pd.read_csv('Trainded Dataset Sentiment.csv', error_bad_lines=False)
df.head(5)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

#TWEET
X = df[['SentimentText']].loc[2:50000]
#SENTIMENT LABEL
y = df[['Sentiment']].loc[2:50000]

#Apply Normalizer function over the tweets
X['Normalized Text'] = X.SentimentText.apply(text_normalization_sentiment)
X = X['Normalized Text']
Run Code Online (Sandbox Code Playgroud)

规范化后,数据框如下所示:

在此输入图像描述

X_train, X_test, y_train, y_test =
sklearn.cross_validation.train_test_split(X, y, 
test_size=0.2, random_state=42)

#Classifier
vec = TfidfVectorizer(min_df=5, max_df=0.95, sublinear_tf=True,
                      use_idf=True, ngram_range=(1,2))
svm_clf = svm.LinearSVC(C=0.1)
vec_clf = Pipeline([('vectorizer', vec), ('pac', svm_clf)])
vec_clf.fit(X_train, y_train) #Problem
joblib.dump(vec_clf, 'svmClassifier.pk1', compress=3)
Run Code Online (Sandbox Code Playgroud)

它失败并出现以下错误:

AttributeError: 'list' object has no attribute 'lower'
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Full Traceback:
--------------------------------------------------------------------------- AttributeError                            Traceback (most recent …
Run Code Online (Sandbox Code Playgroud)

python tf-idf training-data scikit-learn

6
推荐指数
2
解决办法
7569
查看次数

如何解决“ValueError: Supported target types are: ('binary', 'multiclass')。改为'multiclass-multioutput'。” pyton 3.7 中的错误

我想创建一个程序来使用 TF-IDF 和 SVM 进行情感分类。在对数据进行分类之前,我必须使用分层 KFold 将数据集拆分为数据训练和测试。我使用 numpy 数组来存储文本 (X) 和标签 (Y)

但它最终出现了这个错误:

ValueError: Supported target types are: ('binary', 'multiclass'). Got 'multiclass-multioutput' instead'
Run Code Online (Sandbox Code Playgroud)

此代码在 python 3.7 上运行:

labels = []

with open(path, encoding='utf-8') as in_file:
    data = csv.reader(in_file)
    for line in data:
        labels.append(line[1])

label_np = np.array(labels)
lp = label_np.reshape(20,20)
# lp = label_np.transpose(0)
# print(lp)

result_preprocess_np = np.array(result_preprocess)
hp = result_preprocess_np.reshape(20,20)

model = LinearSVC(multi_class='crammer_singer')
total_svm = []

total_mat_svm = np.zeros((20,20))

kf = StratifiedKFold(n_splits=3)
kf.get_n_splits(hp, lp)

for train_index, test_index in kf.split(hp, …
Run Code Online (Sandbox Code Playgroud)

python split training-data scikit-learn

6
推荐指数
0
解决办法
1646
查看次数

如何使用accuracy_score(或其他建议的函数)测量xgboost回归器的准确性

我正在编写代码来解决一个简单的问题,即预测库存中物品丢失的概率。

我正在使用XGBoost预测模型来做到这一点。

我将数据分成两个 .csv 文件,一个是训练数据,另一个是测试数据

这是代码:

    import pandas as pd
    import numpy as np


    train = pd.read_csv('C:/Users/pedro/Documents/Pedro/UFMG/8o periodo/Python/Trabalho Final/train.csv', index_col='sku').fillna(-1)
    test = pd.read_csv('C:/Users/pedro/Documents/Pedro/UFMG/8o periodo/Python/Trabalho Final/test.csv', index_col='sku').fillna(-1)


    X_train, y_train = train.drop('isBackorder', axis=1), train['isBackorder']

    import xgboost as xgb
    xg_reg = xgb.XGBRegressor(objective ='reg:linear', colsample_bytree = 0.3, learning_rate = 0.1,
                    max_depth = 10, alpha = 10, n_estimators = 10)
    xg_reg.fit(X_train,y_train)


    y_pred = xg_reg.predict(test)

    # Create file for the competition submission
    test['isBackorder'] = y_pred
    pred = test['isBackorder'].reset_index()
    pred.to_csv('competitionsubmission.csv',index=False)
Run Code Online (Sandbox Code Playgroud)

这是我尝试测量问题准确性的函数(使用 RMSE …

python training-data scikit-learn xgboost k-fold

6
推荐指数
1
解决办法
7358
查看次数

RuntimeError:当启用急切执行时,传递给 Optimizer.compute_gradients 的 `loss` 应该是一个函数。使用 Tensorflow 1.15

我正在尝试使用 tensorflow 1.15 训练模型并启用急切执行。对于火车损失,我正在使用

train loss = mse_loss*args.lmbda + bits_per_pixel_loss
Run Code Online (Sandbox Code Playgroud)

我已经定义了优化器如下

main_optimiser = tf.train.AdamOptimiser(learning_rate=1e-3)
Run Code Online (Sandbox Code Playgroud)

到这里代码工作正常错误出现在优化的最小部分

main_step = main_optimiser.minimise(train_loss, global_step=step)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

RuntimeError: `loss` passed to Optimizer.compute_gradients should be a function when eager execution is enabled.
Run Code Online (Sandbox Code Playgroud)

因此,当我在函数内部计算 train_loss 时说,loss_computer在 train 函数内部构建然后使用

main_step =main_optimiser.minimise(loss_computer, global_step=step)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

AttributeError: 'NoneType' object has no attribute 'dtype'.
Run Code Online (Sandbox Code Playgroud)

如何在启用 Eager Execution 的情况下训练模型?如果我需要澄清任何事情,请告诉我。非常感谢任何帮助,谢谢!

python optimization training-data deep-learning tensorflow1.15

6
推荐指数
0
解决办法
63
查看次数

在 pytorch 中绘制训练和验证损失图

我正在使用 pytorch 来训练我的 CNN 网络。我想绘制训练和验证损失曲线以可视化模型性能。如何绘制两条曲线?

我有下面的代码

# create a function (this my favorite choice)
def RMSELoss(predicted,target):
    return torch.sqrt(torch.mean((predicted-target)**2))

criterion = RMSELoss

# loss = torch.sqrt(criterion(x, y))
optimizer = torch.optim.Adam(model.parameters(), lr=0.0001)
epochs = 300

n_total_steps = len(train_dataset)

trainingEpoch_loss = []
validationEpoch_loss = []

for epoch in range(epochs):
    step_loss = []
    model.train()
    for i, data in enumerate(train_dataset):
        feature,target = data['data'].type(torch.FloatTensor),torch.tensor(data['target']).type(torch.FloatTensor)
         
        # Clear the gradients
        optimizer.zero_grad()
        # Forward Pass
        outputs = model(feature)
        # Find the Loss
        training_loss = criterion(outputs, target)
        # Calculate gradients …
Run Code Online (Sandbox Code Playgroud)

validation plot training-data mean-square-error pytorch

6
推荐指数
1
解决办法
9504
查看次数