我正在使用scipy.optimize模块来查找最小化输出的最佳输入权重.从我看到的例子中,我们用单侧方程定义约束; 然后我们创建一个'不等式'类型的变量.我的问题是优化包如何知道我的约束中的变量之和是否需要小于1或大于1?
...
def constraint1(x):
return x[0]+x[1]+x[2]+x[3]-1
Run Code Online (Sandbox Code Playgroud)
....
con1 = {'type': 'ineq', 'fun': constraint1}
Run Code Online (Sandbox Code Playgroud)
链接到我在我的例子中使用的完整解决方案:http: //apmonitor.com/che263/index.php/Main/PythonOptimization
谢谢.
从我在网上找到的各种例子来看,我仍然不太明白如何从我的分类数据为神经网络模型创建嵌入层,尤其是当我混合了数值和分类数据时。例如,取如下数据集:
numerical_df = pd.DataFrame(np.random.randint(0,100,size=(100, 3)), columns=['num_1','num_2','num_3'])
cat_df = pd.DataFrame(np.random.randint(0,5,size=(100, 3)), columns=['cat_1','cat_2','cat_3'])
df = numerical_df.join(cat_df)
Run Code Online (Sandbox Code Playgroud)
我想为我的分类数据创建嵌入层并将其与我的数值数据结合使用,但从我看到的所有示例中,它几乎就像模型只是通过嵌入层过滤整个数据集,这令人困惑。
作为我的困惑的一个例子,下面是 Keras 关于顺序模型的文档的一个例子。就好像他们只是将嵌入步骤添加为第一层并将其拟合到整个 x_train 中。
from keras.models import Sequential
from keras.layers import Dense, Dropout
from keras.layers import Embedding
from keras.layers import LSTM
max_features = 1024
model = Sequential()
model.add(Embedding(max_features, output_dim=256))
model.add(LSTM(128))
model.add(Dropout(0.5))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
model.fit(x_train, y_train, batch_size=16, epochs=10)
score = model.evaluate(x_test, y_test, batch_size=16)
Run Code Online (Sandbox Code Playgroud)
因此,最终在创建嵌入矩阵时,是否每个分类变量都有一个......所有分类变量都有一个?我如何将其与不需要嵌入矩阵的其他数据进行协调?
我有一个包含多个字符串列的数据框,我想将其转换为分类数据,以便我可以运行一些模型并从中提取重要特征。
然而,由于唯一值的数量,独热编码数据会扩展为大量列,从而导致性能问题。
为了解决这个问题,我正在尝试使用Sparse = Trueget_dummies 中的参数。
test1 = pd.get_dummies(X.loc[:,['col1','col2','col3','col4']].head(10000))
test2 = pd.get_dummies(X.loc[:,['col1','col2','col3','col4']].head(10000),sparse = True)
Run Code Online (Sandbox Code Playgroud)
但是,当我检查两个比较对象的信息时,它们占用相同的内存量。看起来并没有Sparse = True占用更少的空间。这是为什么?
test1.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 10000 entries, 537293 to 752152
Columns: 2253 entries,...
dtypes: uint8(2253)
memory usage: 21.6 MB
test2.info()
<class 'pandas.core.sparse.frame.SparseDataFrame'>
Int64Index: 10000 entries, 537293 to 752152
Columns: 2253 entries, ...
dtypes: uint8(2253)
memory usage: 21.9 MB
Run Code Online (Sandbox Code Playgroud) 我有一个元组列表,需要将其转换为单个数据框行,其中第一个元组项转换为列,第二个元组项转换为对应的值。这是我尝试过的:
数据:
[(0, 0.52776772063535005),
(4, 0.18798097301734626),
(6, 0.09831844955142259),
(5, 0.059519666448517437),
(3, 0.054459995937603152),
(9, 0.052905323520468818)]
Run Code Online (Sandbox Code Playgroud)
将此数据视为test,我尝试转换为数据框,然后进行数据透视,但是我无法将数据弄平为一条记录。
test = pd.DataFrame.from_records(scores[0])
test.columns=['t1','t2']
t1 t2
0 0 0.527768
1 4 0.187981
2 6 0.098318
3 5 0.059520
4 3 0.054460
5 9 0.052905
Run Code Online (Sandbox Code Playgroud)
test2 = test.pivot(index=None, columns='t1',values='t2')
t1 0 3 4 5 6 9
0 0.527768 NaN NaN NaN NaN NaN
1 NaN NaN 0.187981 NaN NaN NaN
2 NaN NaN NaN NaN 0.098318 NaN
3 NaN NaN NaN 0.05952 NaN NaN …Run Code Online (Sandbox Code Playgroud)