鱼C论坛

 找回密码
 立即注册
查看: 1631|回复: 12

[已解决]'NoneType' object is not iterable

[复制链接]
发表于 2020-4-24 17:24:12 | 显示全部楼层 |阅读模式
5鱼币
'NoneType' object is not iterable  不知道怎么改呢
批注 2020-04-24 172149.png
  1. import sys
  2. import time
  3. import math
  4. import datetime
  5. import threading
  6. import numpy as np
  7. import matplotlib.pyplot as plt
  8.   
  9. def show_data(x,y):
  10.     num_list_x = np.arange(len(x))
  11.     plt.figure(figsize=(20, 10))
  12.     plt.xlim(0, len(num_list_x)+50)
  13.     plt.plot(num_list_x, x, color='b',linestyle='-', label='x')
  14.     plt.legend()
  15.     plt.show()
  16.     if all(y)!= None:
  17.         plt.figure(figsize=(20, 10))
  18.         num_list_y = np.arange(len(y))
  19.         plt.xlim(0, len(num_list_y)+50)
  20.         plt.plot(num_list_y, y, color='r',linestyle='-', label='y')
  21.         plt.legend()
  22.         plt.show()
  23.    
  24.   
  25. def logistic(t):
  26.     return 1.0/(1+np.exp(-t))
  27.   
  28. def n_multiply(t, x):
  29.     return t * x
  30.   
  31. def trans_inverse(x):
  32.     if not isinstance(x, np.ndarray):
  33.         x = np.array(x)
  34.     return np.linalg.inv(x.transpose())
  35.   
  36. def ica(x):
  37.     m = len(x)      # 样本数目,这里是 2 个
  38.     n = len(x[0])   # mic 数目,这里是 1000 个
  39.    
  40.     w = [[0.0]*n for t in range(n)] # 建立个 1000*1000 的列表
  41.     iw = [[0.0]*n for t in range(n)]# 建立个 1000*1000 的列表
  42.     w1 = [[0.0]*n for t in range(n)]# 建立个 1000*1000 的列表
  43.    
  44.     for i in range(n):  # 将对角线初始化为1
  45.         w[i][i] = 1
  46.    
  47.     alpha = 0.001       # 初始化学习率为
  48.    
  49.     for time in range(200):        # 迭代次数最多不超过 200 次
  50.         
  51.         for i in range(m):        # 分离出"样本数目"个样本
  52.             for j in range(n):
  53.                 t = np.dot(w[j], x[i])
  54.                 t = 1 - 2*logistic(t)
  55.                 w1[j] = n_multiply(t,x[i])  # w1[j] = t*x[i]
  56.             iw = trans_inverse(w)    # iw = w^T^(-1)
  57.             iw = w1 + iw
  58.             w1 = np.add(w1, iw)      # w1 += iw
  59.             w1 = np.dot(w1, alpha)
  60.             w = np.add(w, w1)
  61.         print(time, ":\t", w)
  62.     return w
  63.   
  64. def mix(A, x,y):
  65.     mix = np.dot(A, np.array([x, y]))
  66.   
  67.     for i in range(len(mix[0])):
  68.         mix[0][i] = mix[0][i] + mix[1][i]
  69.   
  70.     show_data(mix[0], None)
  71.   
  72.     return mix
  73.   
  74. def decode(w,x):
  75.     ps = np.dot(x, w)
  76.     return ps[0], ps[1]
  77.   
  78. if __name__ =="__main__":
  79.     s1 =[math.sin(float(x)/20) for x in range(0, 1000, 1)]
  80.     s2 = [float(x)/50 for x in range(0, 50, 1)]* 20
  81.     #s1 = [math.sin(float(x)/20) for x inrange(0, 100, 1)]
  82.     #s2 = [float(x)/50 for x in range(0, 50,1)] * 2
  83.     show_data(s1, s2)


  84. #################
  85. A = [[0.6, 0.4], [0.45, 0.55]]  # 混合矩阵
  86. x = mix(A, s1, s2)   #s1/s2线性加权得到输入数据x
  87.    
  88. x_mean = np.mean(x)  # 去均值
  89. for i in range(x.shape[0]):
  90.     for j in range(x.shape[1]):
  91.       x[i][j] = x[i][j] - x_mean
  92.     # ica
  93. w = ica(x)
  94.     # 解混
  95. [ps1, ps2] = decode(w, x)
  96. show_data(ps1, ps2)

复制代码
最佳答案
2020-4-24 17:24:13
70行:show_data(mix[0], None),调用16行:if all(y)!= None: all(None),报错。
把70行改成:show_data(mix[0], [0])

最佳答案

查看完整内容

70行:show_data(mix[0], None),调用16行:if all(y)!= None: all(None),报错。 把70行改成:show_data(mix[0], [0])
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-24 17:24:13 | 显示全部楼层    本楼为最佳答案   
70行:show_data(mix[0], None),调用16行:if all(y)!= None: all(None),报错。
把70行改成:show_data(mix[0], [0])
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-24 18:38:05 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-24 18:39:51 | 显示全部楼层
不过是第几行啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-24 18:42:28 | 显示全部楼层

16
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-24 18:43:41 | 显示全部楼层
没出问题,正常跑
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-24 18:45:16 | 显示全部楼层
16行
  1. if y:
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-24 18:47:34 | 显示全部楼层

我的回复在审核,所以要等等
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-24 18:59:18 | 显示全部楼层
xiaosi4081 发表于 2020-4-24 18:47
我的回复在审核,所以要等等

已经过了审核了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-24 20:07:58 | 显示全部楼层
xiaosi4081 发表于 2020-4-24 18:38
https://www.cnblogs.com/zhaijiahui/p/8391701.html

理解意思 不太会改
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-24 20:08:41 | 显示全部楼层
txxcat 发表于 2020-4-24 19:29
70行:show_data(mix[0], None),调用16行:if all(y)!= None: all(None),报错。
把70行改成:show_data( ...

最后一个图  是空白的 是不是改变意思了啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-24 20:11:11 | 显示全部楼层
txxcat 发表于 2020-4-24 19:29
70行:show_data(mix[0], None),调用16行:if all(y)!= None: all(None),报错。
把70行改成:show_data( ...

是这样的  谢谢谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-24 20:11:59 | 显示全部楼层
GIAAKK 发表于 2020-4-24 20:07
理解意思 不太会改

解决了 谢谢哈
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-13 04:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表