I'm trying to develop optional input box,( if user will put some value, then no_cluster should be this value, if not, then the code after the else should compute the value and consider it).. but it's not getting the input from the user, it's always taking the default value. What I'm doing wrong?
view.py:
def number_cluster(request, data_size):
if request.method == 'GET':
img1 = Book(request.GET)
if img1.is_valid():
no_cluster = int(request.POST.get('num_clusters1'))
return render(int(no_cluster), {'form': img1})
else:
no_cluster = data_size / 2.34
return (int(no_cluster))
my whole file of view.py:
def home(request):
if request.method=="POST":
img = UploadForm(request.POST, request.FILES)
no_clus = int(request.POST.get('num_clusters', 10))
if img.is_valid():
paramFile =io.TextIOWrapper(request.FILES['File'].file)
portfolio1 = csv.DictReader(paramFile)
users = []
users = [row["BASE_NAME"] for row in portfolio1]
my_list = users
vectorizer = CountVectorizer()
dtm = vectorizer.fit_transform(my_list)
lsa = TruncatedSVD(n_components=100)
dtm_lsa = lsa.fit_transform(dtm)
dtm_lsa = Normalizer(copy=False).fit_transform(dtm_lsa)
product= (np.dot(dtm_lsa, dtm_lsa.T))
dist1 = (1 - product)
no_cluster = number_cluster(request,len(my_list))
print(no_cluster)
for i in range(len(arr_3d)):
# print (i+1910)
km = AgglomerativeClustering(n_clusters=no_cluster, linkage='complete')
km = km.fit(arr_3d[i])
labels = km.labels_
csvfile = settings.MEDIA_ROOT +'\'+ 'images\export.csv'
csv_input = pd.read_csv(csvfile, encoding='latin-1')
csv_input['cluster_ID'] = labels
csv_input['BASE_NAME'] = my_list
csv_input.to_csv(settings.MEDIA_ROOT +'/'+ 'output.csv', index=False)
clus_groups = list()
for j in range(no_cluster):
# print(" cluster no %i:%s" % (j, [my_list[i] for i, x in enumerate(labels) if x == j]))
list_of_ints = ([my_list[i] for i, x in enumerate(labels) if x == j])
clus_groups.append(' '.join(list_of_ints))
vectorizer = CountVectorizer()
dtm = vectorizer.fit_transform(my_list)
lsa = TruncatedSVD(n_components=100)
dtm_lsa = lsa.fit_transform(dtm)
dtm_lsa = Normalizer(copy=False).fit_transform(dtm_lsa)
product= (np.dot(dtm_lsa, dtm_lsa.T))
dist1 = (1 - product)
# dist1 = (1 - np.asarray(temp_matrix * temp_matrix.T))
# dist1 = (1 - np.asarray(numpy.asmatrix(dtm_lsa) * numpy.asmatrix(dtm_lsa).T))
# similarity = np.asarray(numpy.asmatrix(dtm_lsa) * numpy.asmatrix(dtm_lsa).T)
k = len(my_list)
# dist1 = 1 - similarity
data2 = np.asarray(dist1)
arr_3d = data2.reshape((1, k, k))
# arr_3d= 1- arr_3d
#no_clus = 5
# no_clus=get_name(request)
for i in range(len(arr_3d)):
# print (i+1910)
# km = AgglomerativeClustering(n_clusters=no_clus, linkage='ward').fit(arr_3d[i])
# km = AgglomerativeClustering(n_clusters=no_clus, linkage='average').fit(arr_3d[i])
km = KMeans(n_clusters=no_clus, init='k-means++')
km = km.fit(arr_3d[i])
# print km
labels2 = km.labels_
print(labels2)
labels = labels.tolist()
labels2 = labels2.tolist()
csv_input = pd.read_csv(settings.MEDIA_ROOT +'/'+ 'output.csv',encoding='latin-1')
labels1 = csv_input['cluster_ID']
new_list = []
for k in labels1:
new_list.append(labels2[k]) # lookup the value in list2 at the index given by list1
print(new_list)
print(len(new_list))
csv_input = pd.read_csv(settings.MEDIA_ROOT +'/'+ 'output.csv',encoding='latin-1')
csv_input['cluster_ID'] = labels
csv_input['BASE_NAME'] = my_list
csv_input['User_Map'] = new_list
csv_input.to_csv(settings.MEDIA_ROOT + '/' + 'output1.csv', index=False)
send_file(request)
return render(request, 'new.html', {'labels': labels})
else:
img=UploadForm()
images=Upload.objects.all()
return render(request,'new.html',{'form':img,'images':images})
Models:
class Book(models.Model):
description = models.TextField(blank=True)
New.html
<h5> Optional : Please insert Number of Clusters</h5>
<input type="number" name="num_clusters1" min="1" max="100000000">
Aucun commentaire:
Enregistrer un commentaire