小编Abd*_*han的帖子

Imputer 减少了我的数据框中列的大小

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)

machine-learning pandas scikit-learn sklearn-pandas

9
推荐指数
1
解决办法
1775
查看次数

Keras 中的损失、指标和得分

在构建模型时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)

machine-learning scikit-learn keras grid-search tensorflow

8
推荐指数
1
解决办法
4929
查看次数

具有两种不同输入样本量的Keras多任务学习

我正在使用共享层部分下的Keras API中的代码实现多任务回归模型。

有两组数据,让我们称他们data_1data_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_1data_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)

python nlp machine-learning keras tensorflow

8
推荐指数
1
解决办法
304
查看次数

在python中匹配两个pandas数据框的列名

我有名字两只大熊猫dataframesdf1df2这样`

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并选择df1df2..列名匹配的标题的所有行df2仅用于选择df1维护所有行的特定列。我尝试了下面给出的一些代码,但这给了我一个空索引。

df1.columns.intersection(df2.columns)
Run Code Online (Sandbox Code Playgroud)

上面的代码没有给我我的结果,因为它给出了没有值的索引头。我想编写一个代码,在其中我可以将两个数据帧作为输入,并比较列标题以供选择。我不必硬编码列名称。

python pandas pandas-groupby

4
推荐指数
1
解决办法
6740
查看次数

所有中间步骤均应为变形器,并进行拟合和转换

我正在使用重要的特征选择来实现管道,然后使用相同的特征来训练我的随机森林分类器。以下是我的代码。

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可通过选择新的功能SelectFromModelsel.transform。然后,我想使用所选的新功能来训练我的RF。

我收到以下错误:

所有中间步骤都应该是转换器,并实现拟合和转换,ExtraTreesClassifier ...

python machine-learning feature-selection scikit-learn

3
推荐指数
1
解决办法
4758
查看次数

如何可视化注意权重?

使用此实现, 我将注意力集中在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文件中。

我正在处理二进制分类问题,我模型的输入是一个热向量(基于字符)。

如何在当前实现中可视化某些特定测试用例的注意力权重?

nlp deep-learning keras attention-model rnn

3
推荐指数
1
解决办法
2485
查看次数

AWS Athena 表每列中的行数

有没有办法找到 AWS Athena 表中的总行数。我使用了以下 SQL 查询,它仅显示列及其数据类型。

DESCRIBE  Table_name
Run Code Online (Sandbox Code Playgroud)

sql amazon-web-services amazon-athena

2
推荐指数
1
解决办法
7134
查看次数

如何用另一个日期替换 datetime64[ns] -Pandas 的日期组件

我有以下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 datetime pandas

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