- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
如果需要计算所有簇中每个其他点的欧几里德距离,我必须检查任何簇是否只有一个点与之关联,最小距离点将被添加到长度为一的簇(具有点关联).在向标签和中心的簇值添加一个点之后需要更新我已经完成了所有的事情但是有时当代码运行时它抛出错误“'NoneType'对象不可迭代”当它必须返回值时.我被这部分卡住了,请帮忙,在此先感谢。这是我的代码
import numpy as np
import matplotlib.pyplot as mlt
import pandas as pd
from clustering import Kmeans_clu
import random
from collections import Counter, defaultdict
from math import sqrt
import matplotlib.pyplot as plt
import random
def ClusterIndicesComp(clustNum, labels_array): # For extracting points from the label
return np.array([i for i, x in enumerate(labels_array) if x == clustNum])
def index(lst, obj, n): # To find the index of of Lable which needs to be change
count = 0
for index, item in enumerate(lst):
if item == obj:
count += 1
if count == n:
return index
raise ValueError('{} is not in list at least {} times'.format(obj, n))
def UpdateCentetr_Label(Index,lablelPlot1, plot2, lablePlot2, pop, plab, plot1, pcenter,cluster1,max_gen):
s = list(plab) #Storing Value of Label in list
print("Value of in Label before\n", s) # Before Updating the value of label
s1 = Counter(s)
print("Value of counter in before is \n", s1)
Index=Index+1
q = index(s, lablePlot2, Index) #Storing the index of label which need to be changed
s[q] = lablelPlot1 #Changing the label by labelPlot1
ulabel = np.array(s)
print("Value of an updated label is \n", ulabel)
print("------------------------------------------")
# print("Value of Pcenter in Updatedlabel\n",pcenter)
ncenter = plot2 + plot1 / 2 #Calculating the center of label which have one point associated
print("Value of new center to be updated\n", ncenter)
ucenter = np.array(pcenter)
#print("Value of ucenter is\n",ucenter)
ucenter[lablelPlot1] = ncenter #Changing the value of label with new center
print("Value of updated center is\n", ucenter)
ko = Counter(ulabel)
print("Value of counter after updated label is\n", ko)
LC1 = [t for (t, v) in ko.items() if v == 1] # Again checking if there is label which have point associated
t1 = np.array(LC1)
if (t1.size):
One_LengthCluster(cluster1, ulabel, ucenter, pop,max_gen) #To update the it again
else:
return ulabel,ucenter,cluster1
def ClusterPopulation(max_gen, population): # to cluster the population
pop = population
plab1 = []
pcenter = []
u=[]
cluster1 = int(input("Enter the cluster for new population\n"))
plab=[]
for i in range(0,max_gen):
if (i % cluster1 == 1): # Checking the condition of Kmeans Clustering
u, label, t, l = Kmeans_clu(cluster1, population) # Storing the values Center(u) anb label(u)
plab1.insert(i, label)
print("Plab is",plab)
pcenter.insert(i, u)
plab = np.array(plab1)
plab=plab[0]
#pcenter=np.array(pcenter)
pcenter=pcenter[0]
ulabel, ucenter, cluster1=One_LengthCluster(cluster1, plab, pcenter, pop,max_gen) #To check if any label has one point associated
return ulabel,ucenter,cluster1 #returning the value of ulabel, ucenter and cluster1
else:
print("Not need of clustering for this generation of\n", i)
def One_LengthCluster(cluster1, plab, pcenter, pop,max_gen):
indexes = []
Index=[] #Store the index of Point which have minimum euclidean distance
D=[] #Store the minimum euclidean distance
labelplot2=[] #Store the Label which have more than 2 points associated
Point2=[] #Store the Point which have minimum euclidean distance
z=[]
Smin=[]
I=[]
L=[]
LC = Counter(plab) #Counting number of points associated with label
print("VAlue of LAbel and Number Cluster Associated with them\n", LC)
LC1 = [t for (t, v) in LC.items() if v == 1]
t1 = np.array(LC1)
if (t1.size):# To check if any of the Label has one point associated if yes than calculate the distance with all the points
for b in range(len(t1)):
plot1 = pop[ClusterIndicesComp(t1[b], plab)] # Extracting the point in the label which have one point associated
print("Point of label one Length PLOT1 is\n", np.array(plot1), t1[b])
z1 = [t for (t, v) in LC.items() if v > 2] # To check distance with label which more than 3 points associated
z = np.array(z1) #Storing the value in the array
for d in range(len(z)):
print("Value of Label which have more than two cluster is\n", z[d])
plot2 = pop[ClusterIndicesComp(z[d], plab)] # Extracting the point in the label more than one point associated
print("Value of plot2 in one length cluster is\n", plot2)
for i in range(len(plot2)):
plotk = plot2[i] # To get one point at a time from plot2
S = np.linalg.norm(np.array(plot1) - np.array(plotk))
print("Distance between {} and {} is {}\n".format(plot1,plotk,S)) # euclidian distance is calculated
if (i == 0):
Smin = S
Sminant = S
indexes.append(i)
else:
if (S < Sminant):
Smin = S
Sminant = Smin
indexes = []
indexes.append(i)
elif (S == Sminant):
indexes = []
indexes.append(i)
#print('indexes:')
print("Index at which the minimum value is stored\n", indexes) # To find the index of Label with which euclidian distance is minimum
for i in range(len(indexes)):
Point2 = plot2[indexes[i]]
I = indexes[i]
L = z[d]
print("VAlues of Point{} which have min distance with plot1 is in Label {} and have Index {} and distance {}\n".format(Point2,L,I,Smin))
if(len(z)==1): #If Label which have more than 2 point associated is only one
D = Smin
Index = indexes[i]
labelplot2=z[d]
Point2=plot2[indexes[i]]
print("Here is the value\n", D, Index, labelplot2, Point2)
ulabel, ucenter, cluster1=UpdateCentetr_Label(Index,t1[b], Point2, z[d], pop, plab, plot1, pcenter,cluster1,max_gen) #After Finding Point now update center and label
return ulabel,ucenter,cluster1
elif (len(z) > 1): #If Label which have more than 2 point associated is more than one
D.append(Smin)
Index.append(I)
labelplot2.append(L)
#print("Value in list are------------\n", labelplot2)
print("Index value is\n",Index)
print("Label value is\n", labelplot2)
z=min(D) #Finding the minimum distance among all the labels
k=D.index(z) #Finding the index where minimum distance is stored in D
Index=Index[k]
labelplot2=labelplot2[k]
Point2 = pop[ClusterIndicesComp(labelplot2, plab)]
Point2=Point2[Index]
print("Value of minimum distance is\n",z,Index,labelplot2,k,Point2)
ulabel, ucenter, cluster1=UpdateCentetr_Label(Index,t1[b], Point2, labelplot2, pop, plab, plot1, pcenter,cluster1,max_gen) #After Finding Point now update center and label
return ulabel,ucenter,cluster1
D=[]
indexes=[]
else: #If no solution have one point associated in the label
print("no lenght 1 cluster\n")
return plab,pcenter,cluster1
population =np.random.rand(10,4) #Generating the random population
max_gen=10 #Giving value of max_gen
ulabel, ucenter, cluster1=ClusterPopulation(max_gen, population) #Taking back the values of ucenter ,ulabel and cluster1
print("Value of ulabel is\n",ulabel)
我的 K-means 代码是这样的
from sklearn.cluster import KMeans
import numpy as np
def Kmeans_clu(K, data):
"""
:param K: Number of cluster
:param data:
:return:
"""
kmeans = KMeans(n_clusters=K, init='random', max_iter=1, n_init=1).fit(data) ##Apply k-means clustering
labels = kmeans.labels_
clu_centres = kmeans.cluster_centers_
z={i: np.where(kmeans.labels_ == i)[0] for i in range(kmeans.n_clusters)} #
return clu_centres, labels ,z,kmeans
回溯是
Traceback (most recent call last):
File "C:/Users/hp/AppData/Local/Programs/Python/Python36/Population Clustering.py", line 184, in <module>
ulabel, ucenter, cluster1=ClusterPopulation(max_gen, population) #Taking back the values of ucenter ,ulabel and cluster1
File "C:/Users/hp/AppData/Local/Programs/Python/Python36/Population Clustering.py", line 85, in ClusterPopulation
ulabel, ucenter, cluster1=One_LengthCluster(cluster1, plab, pcenter, pop,max_gen) #To check if any label has one point associated
File "C:/Users/hp/AppData/Local/Programs/Python/Python36/Population Clustering.py", line 169, in One_LengthCluster
ulabel, ucenter, cluster1=UpdateCentetr_Label(Index,t1[b], Point2, labelplot2, pop, plab, plot1, pcenter,cluster1,max_gen) #After Finding Point now update center and label
File "C:/Users/hp/AppData/Local/Programs/Python/Python36/Population Clustering.py", line 54, in UpdateCentetr_Label
One_LengthCluster(cluster1, ulabel, ucenter, pop,max_gen) #To update the it again
File "C:/Users/hp/AppData/Local/Programs/Python/Python36/Population Clustering.py", line 169, in One_LengthCluster
ulabel, ucenter, cluster1=UpdateCentetr_Label(Index,t1[b], Point2, labelplot2, pop, plab, plot1, pcenter,cluster1,max_gen) #After Finding Point now update center and label
TypeError: 'NoneType' object is not iterable
最佳答案
我认为您只是在 UpdateCentetr_Label
函数中遗漏了一个 return
语句,该语句强制函数返回 None
而实际上不是可迭代:
def UpdateCentetr_Label(Index,lablelPlot1, plot2, lablePlot2, pop, plab, plot1, pcenter,cluster1,max_gen):
# other code here...
if (t1.size):
return One_LengthCluster(cluster1, ulabel, ucenter, pop,max_gen) #To update the it again
关于python - 返回值时“NoneType”对象不可迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50942006/
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
在编码时,我问了自己这个问题: 这样更快吗: if(false) return true; else return false; 比这个? if(false) return true; return
如何在逻辑条件下进行“返回”? 在这样的情况下这会很有用 checkConfig() || return false; var iNeedThis=doSomething() || return fa
这是我的正则表达式 demo 如问题所述: 如果第一个数字是 1 则返回 1 但如果是 145 则返回 145 但如果是 133 则返回 133 样本数据a: K'8134567 K'81345678
在代码高尔夫问答部分查看谜题和答案时,我遇到了 this solution返回 1 的最长和最晦涩的方法 引用答案, int foo(void) { return! 0; } int bar(
我想在下面返回 JSON。 { "name": "jackie" } postman 给我错误。说明 Unexpected 'n' 这里是 Spring Boot 的新手。 1日龄。有没有正确的方法来
只要“is”返回 True,“==”不应该返回 True 吗? In [101]: np.NAN is np.nan is np.NaN Out[101]: True In [102]: np.NAN
我需要获取所有在 6 号或 7 号房间或根本不在任何房间的学生的详细信息。如果他们在其他房间,简单地说,我不希望有那个记录。 我的架构是: students(roll_no, name,class,.
我有一个表单,我将它发送到 php 以通过 ajax 插入到 mysql 数据库中。一切顺利,php 返回 "true" 值,但在 ajax 中它显示 false 消息。 在这里你可以查看php代码:
我在 Kotlin 中遇到了一个非常奇怪的无法解释的值比较问题,以下代码打印 假 data class Foo ( val a: Byte ) fun main() { val NUM
请注意,这并非特定于 Protractor。问题在于 Angular 2 的内置 Testability service Protractor 碰巧使用。 Protractor 调用 Testabil
在调试窗口中,以下表达式均返回 1。 Application.WorksheetFunction.CountA(Cells(4 + (i - 1) * rows_per_record, 28) & "
我在本地使用 jsonplaceholder ( http://jsonplaceholder.typicode.com/)。我正在通过 extjs rest 代理测试我的 GET 和 POST 调用
这是 Postman 为成功调用我的页面而提供的(修改后的)代码段。 var client = new RestClient("http://sub.example.com/wp-json/wp/v2
这个问题在这里已经有了答案: What to do with mysqli problems? Errors like mysqli_fetch_array(): Argument #1 must
我想我对 C 命令行参数有点生疏。我查看了我的一些旧代码,但无论这个版本是什么,都会出现段错误。 运行方式是 ./foo -n num(其中 num 是用户在命令行中输入的数字) 但不知何故它不起作用
我已经编写了一个类来处理命名管道连接,如果我创建了一个实例,关闭它,然后尝试创建另一个实例,调用 CreateFile() 返回 INVALID_HANDLE_VALUE,并且 GetLastErro
即使 is_writable() 返回 true,我也无法写入文件。当然,该文件存在并且显然是可读的。这是代码: $file = "data"; echo file_get_contents($fil
下面代码中的变量 $response 为 NULL,尽管它应该是 SOAP 请求的值。 (潮汐列表)。当我调用 $client->__getLastResponse() 时,我从 SOAP 服务获得了
我一直在网上的不同论坛上搜索答案,但似乎没有与我的情况相符的... 我正在使用 Windows 7,VS2010。 我有一个使用定时器来调用任务栏刷新功能的应用程序。在该任务栏函数中包含对 LoadI
我是一名优秀的程序员,十分优秀!