【发布时间】:2019-01-31 19:20:20
【问题描述】:
我正在测试下面的代码,以使用 JSON 对逻辑回归模型进行序列化。似乎可以写入 JSON 文件,但我无法成功读取 JSON 文件。
我收到以下有关 lr.predict(X) 的错误消息。 "AttributeError: 'list' 对象没有属性 'shape'"
任何意见将不胜感激。
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
import os
import json
import codecs
import numpy as np
iris = load_iris()
X, y = iris.data, iris.target
lr = LogisticRegression()
lr.fit(X, y)
attr = lr.__dict__
New_attr = attr
keys = New_attr.keys()
# --------------------
# Converting array to list
# --------------------
New_attr['coef_'] = attr['coef_'].tolist()
New_attr['classes_'] = attr['classes_'].tolist()
New_attr['n_iter_'] = attr['n_iter_'].tolist()
New_attr['intercept_'] = attr['intercept_'].tolist()
# --------------------
# Writing the JSON file...
# --------------------
json_file = "file.json"
json.dump(New_attr, codecs.open(json_file, 'w', encoding='utf-8'),
sort_keys=True, indent=4)
# --------------------
# Reading the JSON file...
# --------------------
obj_text = codecs.open(json_file, 'r', encoding='utf-8').read()
b_new = json.loads(obj_text)
lr = LogisticRegression()
print(b_new)
lr.__dict__ = dict(b_new)
lr.predict(X)
【问题讨论】:
-
numpy 数组的列表和形状需要使用
len() -
谢谢大赏!刚刚编辑过,它来自 lr.predict(X),所以我猜我的 b_new 里面的某个地方不正确......
-
注意,
New_attr = attr除了创建一个引用与attr相同的对象的新变量之外,实际上并没有做任何事情
标签: python json logistic-regression