小编Aar*_*and的帖子

Python:神经网络-TypeError:“历史记录”对象不可下标

我一直在尝试使用python中的Keras和Tensorflow构建和比较神经网络,但是当我希望绘制模型进行比较时,我收到了一个错误:

TypeError: 'History' object is not subscriptable
Run Code Online (Sandbox Code Playgroud)

这是我对这三个模型的代码:

############################## Initiate model 1 ###############################
# Model 1 has no hidden layers
from keras.models import Sequential
model1 = Sequential()

# Get layers
from keras.layers import Dense
# Add first layer
n_cols = len(X.columns)
model1.add(Dense(units=n_cols, activation='relu', input_shape=(n_cols,)))
# Add output layer
model1.add(Dense(units=2, activation='softmax'))

# Compile the model
model1.compile(loss='categorical_crossentropy', optimizer='adam', metrics= 
['accuracy']) 

# Define early_stopping_monitor
from keras.callbacks import EarlyStopping
early_stopping_monitor = EarlyStopping(patience=2)

# Fit model
model1.fit(X, y, validation_split=0.33, epochs=30, callbacks= 
[early_stopping_monitor], verbose=False)


############################## Initiate …
Run Code Online (Sandbox Code Playgroud)

python neural-network keras tensorflow

11
推荐指数
2
解决办法
5097
查看次数

在 Matplotlib 中创建 pdp 图的子图

我正在pdpbox为模型中的 50 个特征中的每一个创建 pdp 图。我已经使用以下方法成功创建并保存了这些图:

# pdp_plot (https://pdpbox.readthedocs.io/en/latest/pdp_plot.html)
for i, feat in enumerate(list_features):
    # increase i by 1 to help with name formatting
    n_feat = i + 1

    # pdp_isolate (https://pdpbox.readthedocs.io/en/latest/pdp_isolate.html)
    pdp_dove = pdp.pdp_isolate(model=model,
                               dataset=df_train,
                               model_features=list_features,
                               feature=feat)

    # generate plot
    fig, axes = pdp.pdp_plot(pdp_isolate_out=pdp_dove,
                             feature_name=feat,
                             plot_pts_dist=True)

    # save figure
    if n_feat < 10:
        n_feat = '0{0}'.format(n_feat)
    # save figure
    plt.savefig('{0}_pdp_{1}.png'.format(n_feat, feat))
Run Code Online (Sandbox Code Playgroud)

如果我愿意,我可以停在这里,因为我的工作目录中的所有绘图都以格式化和有组织的方式保存。但是,我想知道是否可以使用nrows=5和将每个图添加到子图网格中ncols=10。先感谢您!

python plot matplotlib

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

我可以使用 groupby 在 Pandas 数据框中创建每行都是运行列表的列吗?

想象一下,我有一个 Pandas DataFrame:

# create df
df = pd.DataFrame({'id': [1,1,1,2,2,2],
                   'val': [5,4,6,3,2,3]})
Run Code Online (Sandbox Code Playgroud)

让我们假设它是按“id”和一个虚构的、未显示的日期列(升序)排序的。我想创建另一列,其中每一行都是该日期的“val”列表。

结束的 DataFrame 将如下所示:

df = pd.DataFrame({'id': [1,1,1,2,2,2],
                   'val': [5,4,6,3,2,3],
                   'val_list': [[5],[5,4],[5,4,6],[3],[3,2],[3,2,3]]})

Run Code Online (Sandbox Code Playgroud)

我不想使用循环,因为我正在使用的实际 df 大约有 400 万条记录。我想象我会使用 lambda 函数与 groupby 结合使用(类似这样):

df['val_list'] = df.groupby('id')['val'].apply(lambda x: x.runlist())
Run Code Online (Sandbox Code Playgroud)

这引发了一个 AttributError 因为 runlist() 方法不存在,但我认为解决方案将是这样的。

有谁知道如何解决这个问题?

python list aggregation pandas data-science

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

使用 Python 将数组中的负值替换为 0 并将大于 1 的值替换为 1 的最快方法是什么?

我有一个列表(或某种类型的数组),其中几乎所有值都在 0 到 1 之间,但我偶尔会有稍微负数或大于 1 的值。

list_values = [-0.01, 0, 0.5, 0.9, 1.0, 1.01]
Run Code Online (Sandbox Code Playgroud)

我想用 0 替换负数,用 1 替换大于 1 的值。

只有 1 个条件,我会这样使用np.where

arr_values = np.where(pd.Series(list_values) < 0, 0, pd.Series(list_values))
Run Code Online (Sandbox Code Playgroud)

要处理多个条件,我可以定义一个函数,然后使用 lambda 函数应用它:

def change_values(value):
    if value < 0:
        return 0
    elif value > 1:
        return 1
    else:
        return value

series_values = pd.Series(list_values).apply(lambda x: change_values(value=x))
Run Code Online (Sandbox Code Playgroud)

有没有更快的方法来实现这一点?

python numpy pandas

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

刮困难表

我已经尝试从这里刮一张桌子好一段时间了,但是没有成功。我要抓取的表格标题为“每场比赛统计信息的团队人数”。我有信心,一旦我能够抓取该表的一个元素,便可以遍历列表中所需的列,并最终得到一个熊猫数据框。

到目前为止,这是我的代码:

from bs4 import BeautifulSoup
import requests

# url that we are scraping
r = requests.get('https://www.basketball-reference.com/leagues/NBA_2019.html')
# Lets look at what the request content looks like
print(r.content)

# use Beautifulsoup on content from request
c = r.content
soup = BeautifulSoup(c)
print(soup)

# using prettify() in Beautiful soup indents HTML like it should be in the web page
# This can make reading the HTML a little be easier
print(soup.prettify())

# get elements within the 'main-content' tag
team_per_game …
Run Code Online (Sandbox Code Playgroud)

python beautifulsoup web-scraping

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

使用不同的地图同时映射多个列

我这里有一个 pandas 数据框:

import pandas as pd

df = pd.DataFrame({'col1': ['a','a','b','b'],
                   'col2': ['a','a','b','b']})
Run Code Online (Sandbox Code Playgroud)

我这里有一个映射字典:

dict_map = {'col1': {'a': 0.5, 'b': 1.0},
            'col2': {'a': 0.6, 'b': 0.9}}
Run Code Online (Sandbox Code Playgroud)

我想将每一列与相应的字典映射,以便数据框看起来像:

    col1  col2
0   0.5   0.6
1   0.5   0.6
2   1.0   0.9
3   1.0   0.9
Run Code Online (Sandbox Code Playgroud)

我可以轻松地迭代其中的列df并获得所需的结果,但我试图避免迭代。我怎样才能在不迭代的情况下做到这一点?

python dictionary pandas

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