小编T3J*_*J45的帖子

无法使用 pyplot for ndarray 绘制双条形图、条形图

我有这 2 个{ndarray}有 3 个正值、负值和中性分数的值。

>>>y1
array([82, 80, 63])
>>>y2
array([122,  73,  30])
Run Code Online (Sandbox Code Playgroud)

对于相同的 I 需要y1[0]y2[0]绘制在一起,因为它们对应为正值,每个数组中的其他 2 个值也是如此。

我试过这个:

import matplotlib.pyplot as plt
import numpy as np

def biplt(groundTruth, predictedValues, plt_name='<name>'):
        gt = groundTruth
        pr = predictedValues
        x = np.arange(2)

        y1, y2 = gt.values, pr.values
        fig, axes = plt.subplots(ncols=1, nrows=1)

        width = 0.20
        plt.title('%s\n Accuracy Score' % plt_name)
        plt.xlabel('Parameters')
        plt.ylabel('Score')
        axes.bar(x, y1, width, label="Algorithm 1")
        axes.bar(x + width, y2, width, color=list(plt.rcParams['axes.prop_cycle'])[2]['color'], label="Algorithm 2")
        axes.set_xticks(x …
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib python-2.7

6
推荐指数
2
解决办法
2万
查看次数

keras:在源内部计算出权重以输入乘法

直觉:

我创建了一个自动编码器,尽管它是针对电影用户的评分矩阵。我正在尝试使用协作过滤(CF)重新创建预测时的输出。

数据集:

下面的数据集是输入的方式。我在这里将其转换为Pivot矩阵:我们将其称为 A_set

MovieId 1    2    3    4    5    6    7  ...
UserId
0       5.0  0.0  0.0  0.0  2.0  0.0  0.0  ...
1       0.0  0.0  0.0  2.0  2.0  0.0  0.0  ...
2       5.0  0.0  1.0  0.0  0.0  0.0  0.0  ...
3       1.0  0.0  0.0  0.0  3.0  0.0  3.0  ... 
Run Code Online (Sandbox Code Playgroud)

还创建了它的转置MovieIds,在行和UserIds列中。我们称这个为B_set

问卷:

对此,我有以下查询:

  • 在神经网络中向自动编码器(使用Keras制造)提供输入时,什么集合(A / B)可以称为协作过滤(CF)?
  • 我试图区分基于用户的CF和基于项目的CF
  • 现在我内部知道以下公式如何在数学上起作用。我只是不确定在Keras / TF代码中是否也能以相同的方式工作。我应该考虑将哪一个(A / B组)作为我的CF?

Y = Theta(转置)输入(X)+ C

  • Theta是权重矩阵,我需要查看代码是否转置了Theta矩阵,然后求解该方程式,或者它已经转置了,我给出的输入必须是B_set对CF公正。

我尝试提供A_set …

python collaborative-filtering keras tensorflow

5
推荐指数
0
解决办法
150
查看次数

为什么 DBSCAN 聚类在电影镜头数据集上返回单个聚类?

场景:

我正在对电影镜头数据集执行聚类,我有两种格式的数据集:

旧格式:

uid iid rat
941 1   5
941 7   4
941 15  4
941 117 5
941 124 5
941 147 4
941 181 5
941 222 2
941 257 4
941 258 4
941 273 3
941 294 4
Run Code Online (Sandbox Code Playgroud)

新格式:

uid 1               2               3               4
1   5               3               4               3
2   4               3.6185548023    3.646073985     3.9238342172
3   2.8978348799    2.6692556753    2.7693015618    2.8973463681
4   4.3320762062    4.3407749532    4.3111995162    4.3411425423
940 3.7996234581    3.4979386925    3.5707888503    2
941 5               NaN             NaN             NaN
942 4.5762594612 …
Run Code Online (Sandbox Code Playgroud)

python cluster-analysis pandas dbscan

4
推荐指数
2
解决办法
9214
查看次数

Python/Pandas TypeError:'list'对象不可调用

这不是一个重复的问题,或者至少我不这么认为.

当我尝试运行这两行代码片段时:

import pandas as pd

mydates = pd.date_range('2010-01-22', '2010-01-26')
Run Code Online (Sandbox Code Playgroud)

在尝试foll时:

In [16]:import pandas as pd

In [17]:mydates = pd.date_range('2010-01-22', '2010-01-26')
Traceback (most recent call last):
Run Code Online (Sandbox Code Playgroud)

尝试2.7和3.6后我得到以下错误

File "<ipython-input-17-ef49b611e028>", line 1, in <module>
        mydates = pd.date_range('2010-01-22', '2010-01-26')

    TypeError: 'list' object is not callable
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

python datetime list pandas

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

使用条件打印数据框中的特定行

请注意,我是在函数中执行此操作的,并且我已经提到了一个非常好的线程。

这是python函数,传递的参数是从用户那里获取的

def recommend(uid):
    ds = pd.read_csv("pred_matrix-full_ubcf.csv")
    records = ds.loc[ds['uid'] == uid]
    for recom in records:
        print recom
Run Code Online (Sandbox Code Playgroud)

数据格式:

uid iid     rat
344 1189    5
344 1500    5
344 814     5
736 217     3.3242361285
736 405     3.3238380154
736 866     3.323500531
331 1680    2
331 1665    2
331 36      1.999918585
Run Code Online (Sandbox Code Playgroud)

参考: this1 , this2

无法找到我出错的地方,我正在关注this1线程,但无法得到它。

python dataframe pandas

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

根据表dynamodb python中的存在更新或插入项目

问题

我正在尝试逐项查看表,这样如果某个项目已经存在,那么我应该能够更新它,如果不存在,那么我应该能够插入它。

但是,我了解到更新的工作方式也类似于 upsert(update/insert) 。我的情况也不适合这个。

我的情况

  1. 检查item表中是否存在并存储flag(布尔值)
  2. 检查是否flag0(项目不可用),然后插入该项目并将当前时间戳添加到列中Inserted_dttm
  3. 检查是否flag1(项目可用),然后更新项目并将当前时间戳添加到列中Updated_dttm(而不是 Inserted_dttm)

试用

我一直在寻找query()是一个不错的选择get_item(),但是您的解决方案都受到欢迎。

def lambda_handler(event, context):
    x = TrainDataProcess()
    file_name = 'Training_data/' + event['file_name']
    s3.Object(bucket_name, file_name).download_file('/tmp/temp.xlsx')
    table_name = 'training_data'

    x.load_excel(name='/tmp/temp.xlsx')
    x.load_headers(skiprows=0)
    x.data_picking()

    table = dynamoDB_client.Table(table_name)
    load = x.return_records_json()

    try:
        with table.batch_writer() as batch:
            for record in load:
                flag = table.query(TableName=table_name, )
                if flag == 0:
                    record['inserted_dttm'] = get_dttm()
                    batch.put_item(Item=record)
                elif flag == …
Run Code Online (Sandbox Code Playgroud)

python amazon-dynamodb boto3 aws-lambda dynamodb-queries

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