小编Cen*_*tAu的帖子

Python,迭代地将json/dictionary对象写入文件(一次一个)

我有一个大for loop的,我创建了json对象,我希望能够将每次迭代中的对象流写入文件.我希望以后能够以类似的方式使用该文件(一次读取一个对象).我的json对象包含换行符,我不能只将每个对象转储为文件中的一行.我怎样才能做到这一点?

为了使其更具体,请考虑以下事项:

for _id in collection:
    dict_obj = build_dict(_id)  # build a dictionary object 
    with open('file.json', 'a') as f:
        stream_dump(dict_obj, f) 
Run Code Online (Sandbox Code Playgroud)

stream_dump 是我想要的功能.

请注意,我不想创建一个大型列表并使用类似的东西转储整个列表json.dump(obj, file).我希望能够在每次迭代中将对象附加到文件中.

谢谢.

python json dictionary

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

使用交叉验证评估Logistic回归

我想使用交叉验证来测试/训练我的数据集,并评估逻辑回归模型在整个数据集上的性能,而不仅仅是在测试集上(例如25%).

这些概念对我来说是全新的,我不确定它是否做得对.如果有人能告诉我正确的步骤,我会在错误的地方采取行动,我将不胜感激.我的部分代码如下所示.

另外,如何在当前图形的同一图形上绘制"y2"和"y3"的ROC?

谢谢

import pandas as pd 
Data=pd.read_csv ('C:\\Dataset.csv',index_col='SNo')
feature_cols=['A','B','C','D','E']
X=Data[feature_cols]

Y=Data['Status'] 
Y1=Data['Status1']  # predictions from elsewhere
Y2=Data['Status2'] # predictions from elsewhere

from sklearn.linear_model import LogisticRegression
logreg=LogisticRegression()
logreg.fit(X_train,y_train)

from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

from sklearn import metrics, cross_validation
predicted = cross_validation.cross_val_predict(logreg, X, y, cv=10)
metrics.accuracy_score(y, predicted) 

from sklearn.cross_validation import cross_val_score
accuracy = cross_val_score(logreg, X, y, cv=10,scoring='accuracy')
print (accuracy)
print (cross_val_score(logreg, X, y, cv=10,scoring='accuracy').mean())

from nltk import ConfusionMatrix 
print (ConfusionMatrix(list(y), list(predicted)))
#print …
Run Code Online (Sandbox Code Playgroud)

python scikit-learn cross-validation logistic-regression

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

来自Amazon S3或其他需要凭证的来源的Dockerfile复制文件

我正在尝试构建Docker映像,我需要将一些文件从S3复制到该映像。

在Dockerfile内部,我正在使用:

Docker文件

FROM library/ubuntu:16.04
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8

# Copy files from S3 inside docker
RUN aws s3 COPY s3://filepath_on_s3 /tmp/
Run Code Online (Sandbox Code Playgroud)

但是,aws需要AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY。我知道我可以通过使用它们ARG。但是,在构建时将它们传递给映像是个坏主意吗?

如何在不将秘密密钥存储在图像中的情况下实现此目的?

amazon-s3 amazon-web-services docker

8
推荐指数
2
解决办法
6052
查看次数

重新映射mac中的右选项键

Macbook pro 13"没有正确的控制键.作为一名程序员,我真的需要这个键,使用键盘左侧的按键来控制左侧控制也不方便.有没有办法全局改变正确的选项键(我不需要那么多)到mac中的ctrl键?

keyboard macos keymapping

7
推荐指数
2
解决办法
4618
查看次数

Gensim获取文档主题(见文档)

我知道在为gensim训练lda模型之后,我们可以通过以下方式获得一个看不见的文档的主题:

lda = LdaModel(corpus, num_topics=10)
doc_lda = lda[doc_bow]
Run Code Online (Sandbox Code Playgroud)

但是那些已经用于培训的文件呢?我的意思是有没有办法在培训中使用语料库中的文档,而不像新文档那样对待它?

python lda gensim

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

相同的Python代码,相同的数据,不同机器上的不同结果

我有一个非常奇怪的问题,我在不同的机器上获得相同代码和相同数据的不同结果.

我有一个基于python的代码numpy/scipy/sklearn,我anaconda用作我的基本python发行版.即使我将整个项目目录(包括所有数据和代码)从我的主机复制到另一台机器并运行它,我得到的结果也不同.具体来说,我正在进行分类任务,我的准确度差异达到3%.我在两台机器上使用相同版本的python和anaconda.我的主机是ubuntu 16.04,其上的结果低于我尝试过的各种操作系统的其他几台机器(OSX,ubuntu 14.04和Centos).因此,我当前的系统配置应该有问题,因为所有其他机器都显示一致的结果.由于我的anaconda版本在所有机器中都是一致的,我不知道还有什么问题.任何想法我还应该检查什么或可能是问题的根源?

我也从头开始删除并重新安装了anaconda,但它没有帮助.

python numpy scipy scikit-learn anaconda

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

Scikit分类报告 - 更改显示结果的格式

Scikit分类报告仅显示两位数的精确度和召回分数.是否有可能使它在点后显示4位数,我的意思是代替0.67显示0.6783?

 from sklearn.metrics import classification_report
 print classification_report(testLabels, p, labels=list(set(testLabels)), target_names=['POSITIVE', 'NEGATIVE', 'NEUTRAL'])
                     precision    recall  f1-score   support

         POSITIVE       1.00      0.82      0.90     41887
         NEGATIVE       0.65      0.86      0.74     19989
         NEUTRAL        0.62      0.67      0.64     10578
Run Code Online (Sandbox Code Playgroud)

另外,我应该担心精度得分为1.00吗?谢谢!

python classification machine-learning svm scikit-learn

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

带有更大符号(>)的Python子进程调用无效

我有一个可执行文件接受字符串并输出另一个字符串.现在我需要将一个文件作为输入提供给它并将输出写入另一个文件.标准命令如下所示executable_path < input > output.现在我将它包装在python中.但我得到错误.

 cmd = [executable_path , '<', 'tmp/input.txt', '>',
           'tmp/output.txt']
    p = subprocess.Popen(cmd)
    p.communicate()
Run Code Online (Sandbox Code Playgroud)

无效的参数:<

我也尝试加入cmd参数:

cmd = [executable_path, ' '.join(['<', 'tmp/input.txt', '>',
       'tmp/output.txt'])]
Run Code Online (Sandbox Code Playgroud)

无效参数:<tmp/input.txt> tmp/output.txt

将命令作为字符串传递也不起作用.

 p = subprocess.Popen(' '.join(cmd))
Run Code Online (Sandbox Code Playgroud)

OSError:[Errno 2]没有这样的文件或目录

我在这里错过了什么?

python subprocess popen

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

pymongo, mongodb 向现有字典添加新键

如何更新记录的字典元素以添加新键(如果不存在)或更新键的相应值(如果存在)。例如:

record = {'_id':1,
            'value': {'key1' : '200'}}
Run Code Online (Sandbox Code Playgroud)

我希望'value'通过添加新的键值对来更新。例如 value={'key2':'300'}。所以我想要的更新记录是:

    record = {'_id':1,
                'value': {'key1' : '200',
                          'key2' : '300'}}
Run Code Online (Sandbox Code Playgroud)

我试过了:

    value={'key2':'300'}
    mongo.db['mydb'].update(
            {'_id': 1},
            {'$set': {'value': value}})
Run Code Online (Sandbox Code Playgroud)

但它会覆盖“值”并且不会向其添加新键:

record = {'_id':1,
            'value': {'key2' : '300'}}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

python mongodb pymongo

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

Python,将函数赋值给变量,更改可选参数的值

是否可以使用修改后的默认参数为变量赋值?

为了使它更具体,我将举一个例子.以下显然不适用于当前形式,仅用于显示我需要的内容:

def power(a, pow=2):
    ret = 1
    for _ in range(pow):
        ret *= a
    return ret

cube = power(pow=3)
Run Code Online (Sandbox Code Playgroud)

结果cube(5)应该是125.

python function

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