print(np.shape(ar_fulldata_input_xx))
Run Code Online (Sandbox Code Playgroud)
输出:(9027, 1443)
现在我Imputer用来估算我的数据框的缺失值,ar_fulldata_input_xx如下所示。
fill_NaN = Imputer(missing_values=np.nan, strategy='mean', axis=0)
imputed_DF = pd.DataFrame(fill_NaN.fit_transform(ar_fulldata_input_xx))
Run Code Online (Sandbox Code Playgroud)
现在我检查我的估算数据框的大小,如下所示。
print(np.shape(imputed_DF))
Run Code Online (Sandbox Code Playgroud)
输出:(9027, 1442)
为什么列大小减一?
有什么办法可以在插补函数后找到哪一列正在混合?
我运行了以下代码行以删除具有完整“NAN”值或完整“0”值的所有列。
ar_fulldata_input_xx = ar_fulldata_input_xx.loc[:, (ar_fulldata_input_xx != 0).any(axis=0)]
Run Code Online (Sandbox Code Playgroud)
和
ar_fulldata_input_xx=ar_fulldata_input_xx.dropna(axis=1, how='all')
Run Code Online (Sandbox Code Playgroud) 在构建模型时loss,metrics和之间有什么区别?它们应该不同还是相同?在典型模型中,我们将所有三个用于。scoringkerasGridSearchCV
这是使用所有三个的典型回归模型的快照。
def create_model():
model = Sequential()
model.add(Dense(12, input_dim=1587, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='mean_squared_error', optimizer='adam', metrics=['mean_squared_error'])
return model
model = KerasRegressor(build_fn=create_model, verbose=0)
batch_size = [10, 20, 40, 60, 80, 100]
epochs = [10, 50, 100]
param_grid = dict(batch_size=batch_size, epochs=epochs)
grid = GridSearchCV(estimator=model,param_grid=param_grid, scoring='r2' n_jobs=-1)
grid_result = grid.fit(X, Y)
Run Code Online (Sandbox Code Playgroud) 我正在使用共享层部分下的Keras API中的代码实现多任务回归模型。
有两组数据,让我们称他们data_1与data_2如下。
data_1 : shape(1434, 185, 37)
data_2 : shape(283, 185, 37)
Run Code Online (Sandbox Code Playgroud)
data_1是由1434个样本组成,每个样本的长度为185个字符,并且37显示的唯一字符总数为37或换句话说,vocab_size。比较而言,它data_2由283个字符组成。
我先将data_1和data_2转换为二维numpy数组,然后将其提供给Embedding层。
data_1=np.argmax(data_1, axis=2)
data_2=np.argmax(data_2, axis=2)
Run Code Online (Sandbox Code Playgroud)
这使得数据的形状如下。
print(np.shape(data_1))
(1434, 185)
print(np.shape(data_2))
(283, 185)
Run Code Online (Sandbox Code Playgroud)
矩阵中的每个数字代表索引整数。
多任务模型如下。
user_input = keras.layers.Input(shape=((185, )), name='Input_1')
products_input = keras.layers.Input(shape=((185, )), name='Input_2')
shared_embed=(keras.layers.Embedding(vocab_size, 50, input_length=185))
user_vec_1 = shared_embed(user_input )
user_vec_2 = shared_embed(products_input )
input_vecs = keras.layers.concatenate([user_vec_1, user_vec_2], name='concat')
input_vecs_1=keras.layers.Flatten()(input_vecs)
input_vecs_2=keras.layers.Flatten()(input_vecs)
# Task 1 FC layers
nn = keras.layers.Dense(90, activation='relu',name='layer_1')(input_vecs_1)
result_a …Run Code Online (Sandbox Code Playgroud) 我有名字两只大熊猫dataframesdf1和df2这样`
df1: a b c d
1 2 3 4
5 6 7 8
Run Code Online (Sandbox Code Playgroud)
和
df2: b c
12 13
Run Code Online (Sandbox Code Playgroud)
我希望结果像
result: b c
2 3
6 7
Run Code Online (Sandbox Code Playgroud)
这里应该注意的 a b c d是pandas数据框中的列名。两个熊猫数据框的形状和值都不同。我想将列名的列名df2与列名的列名匹配df1并选择df1与df2..列名匹配的标题的所有行df2仅用于选择df1维护所有行的特定列。我尝试了下面给出的一些代码,但这给了我一个空索引。
df1.columns.intersection(df2.columns)
Run Code Online (Sandbox Code Playgroud)
上面的代码没有给我我的结果,因为它给出了没有值的索引头。我想编写一个代码,在其中我可以将两个数据帧作为输入,并比较列标题以供选择。我不必硬编码列名称。
我正在使用重要的特征选择来实现管道,然后使用相同的特征来训练我的随机森林分类器。以下是我的代码。
m = ExtraTreesClassifier(n_estimators = 10)
m.fit(train_cv_x,train_cv_y)
sel = SelectFromModel(m, prefit=True)
X_new = sel.transform(train_cv_x)
clf = RandomForestClassifier(5000)
model = Pipeline([('m', m),('sel', sel),('X_new', X_new),('clf', clf),])
params = {'clf__max_features': ['auto', 'sqrt', 'log2']}
gs = GridSearchCV(model, params)
gs.fit(train_cv_x,train_cv_y)
Run Code Online (Sandbox Code Playgroud)
因此,X_new可通过选择新的功能SelectFromModel和sel.transform。然后,我想使用所选的新功能来训练我的RF。
我收到以下错误:
所有中间步骤都应该是转换器,并实现拟合和转换,ExtraTreesClassifier ...
使用此实现, 我将注意力集中在RNN(将输入序列分为两类)上,如下所示。
visible = Input(shape=(250,))
embed=Embedding(vocab_size,100)(visible)
activations= keras.layers.GRU(250, return_sequences=True)(embed)
attention = TimeDistributed(Dense(1, activation='tanh'))(activations)
attention = Flatten()(attention)
attention = Activation('softmax')(attention)
attention = RepeatVector(250)(attention)
attention = Permute([2, 1])(attention)
sent_representation = keras.layers.multiply([activations, attention])
sent_representation = Lambda(lambda xin: K.sum(xin, axis=1))(sent_representation)
predictions=Dense(1, activation='sigmoid')(sent_representation)
model = Model(inputs=visible, outputs=predictions)
Run Code Online (Sandbox Code Playgroud)
我已经训练了模型并将权重保存到weights.best.hdf5文件中。
我正在处理二进制分类问题,我模型的输入是一个热向量(基于字符)。
如何在当前实现中可视化某些特定测试用例的注意力权重?
有没有办法找到 AWS Athena 表中的总行数。我使用了以下 SQL 查询,它仅显示列及其数据类型。
DESCRIBE Table_name
Run Code Online (Sandbox Code Playgroud) 我有以下datetime64[ns]类型的<class 'pandas.core.series.Series'>时间戳。
x1=pd.Timestamp('2018-04-25 00:00:00')
x2=pd.Timestamp('2020-09-02 00:53:00')
Run Code Online (Sandbox Code Playgroud)
有没有什么办法可以代替一部分时间x1与的x2,反之亦然。
输出应与datetime64[ns]类型如下所示。
2018-04-25 00:53:00
Run Code Online (Sandbox Code Playgroud) python ×4
keras ×3
pandas ×3
scikit-learn ×3
nlp ×2
tensorflow ×2
datetime ×1
grid-search ×1
rnn ×1
sql ×1