我正在使用随机森林算法作为我论文项目的分类器.训练集由数千个图像组成,并且对于每个图像,约2000个像素被采样.对于每个像素,我有成千上万的功能.由于我目前的硬件限制(8G的ram,可能可扩展到16G),我能够在内存中只为一个图像拟合样本(即每像素的特征).我的问题是:是否可以多次调用火车方法,每次使用不同的图像样本,并在每次调用时自动更新统计模型?我对变量重要性特别感兴趣,因为在我使用整个功能集训练完整的训练集之后,我的想法是将功能的数量从几十万减少到大约2000,只保留最重要的功能.
感谢Daniele的任何建议
我想按主题对大量(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
我正在寻找在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在第一个纪元后保存其处理过的图像?
谢谢!
我使用以下代码来保存随机森林模型.我正在使用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年的数据.
在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)
代码行,输入管道仍然运行顺畅.
所以我的问题是:
新输入管道如何在引擎盖下工作?它根本不使用队列吗?或者它是否使用它们,并且只是自己启动它们?此外,如果它确实使用它们,是否有一种方法可以监控它们的完整程度,因为旧管道会自动执行,而新管道则没有?
我正在通过推文训练分类器以进行情绪分析.
代码如下:
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) 我想创建一个程序来使用 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) 我正在编写代码来解决一个简单的问题,即预测库存中物品丢失的概率。
我正在使用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 …
我正在尝试使用 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
我正在使用 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) training-data ×10
python ×5
scikit-learn ×4
generator ×1
k-fold ×1
keras ×1
nltk ×1
opencv ×1
optimization ×1
pickle ×1
plot ×1
pytorch ×1
split ×1
tensorflow ×1
tf-idf ×1
validation ×1
xgboost ×1