mirror of
https://github.com/20kaushik02/CSE515_MWDB_Project.git
synced 2025-12-06 09:44:06 +00:00
Merge branch 'master' of https://github.com/20kaushik02/CSE515_MWDB_Project
This commit is contained in:
commit
54404733bd
@ -1,51 +0,0 @@
|
||||
import numpy as np
|
||||
|
||||
def svd(matrix, k):
|
||||
# Step 1: Compute the covariance matrix
|
||||
cov_matrix = np.dot(matrix.T, matrix)
|
||||
|
||||
# Step 2: Compute the eigenvalues and eigenvectors of the covariance matrix
|
||||
eigenvalues, eigenvectors = np.linalg.eig(cov_matrix)
|
||||
|
||||
# Step 3: Sort the eigenvalues and corresponding eigenvectors
|
||||
sort_indices = eigenvalues.argsort()[::-1]
|
||||
eigenvalues = eigenvalues[sort_indices]
|
||||
eigenvectors = eigenvectors[:, sort_indices]
|
||||
|
||||
# Step 4: Compute the singular values and the left and right singular vectors
|
||||
singular_values = np.sqrt(eigenvalues)
|
||||
left_singular_vectors = np.dot(matrix, eigenvectors)
|
||||
right_singular_vectors = eigenvectors
|
||||
|
||||
# Step 5: Normalize the singular vectors
|
||||
for i in range(left_singular_vectors.shape[1]):
|
||||
left_singular_vectors[:, i] /= singular_values[i]
|
||||
|
||||
for i in range(right_singular_vectors.shape[1]):
|
||||
right_singular_vectors[:, i] /= singular_values[i]
|
||||
|
||||
# Keep only the top k singular values and their corresponding vectors
|
||||
singular_values = singular_values[:k]
|
||||
left_singular_vectors = left_singular_vectors[:, :k]
|
||||
right_singular_vectors = right_singular_vectors[:, :k]
|
||||
|
||||
return left_singular_vectors, np.diag(singular_values), right_singular_vectors.T
|
||||
|
||||
def nmf(matrix, k, num_iterations = 100):
|
||||
d1, d2 = matrix.shape
|
||||
# Initialize W and H matrices with random non-negative values
|
||||
W = np.random.rand(d1, k)
|
||||
H = np.random.rand(k, d2)
|
||||
|
||||
for iteration in range(num_iterations):
|
||||
# Update H matrix
|
||||
numerator_h = np.dot(W.T, matrix)
|
||||
denominator_h = np.dot(np.dot(W.T, W), H)
|
||||
H *= numerator_h / denominator_h
|
||||
|
||||
# Update W matrix
|
||||
numerator_w = np.dot(matrix, H.T)
|
||||
denominator_w = np.dot(W, np.dot(H, H.T))
|
||||
W *= numerator_w / denominator_w
|
||||
|
||||
return W, H
|
||||
@ -1,198 +0,0 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import json\n",
|
||||
"import math\n",
|
||||
"from pymongo import MongoClient\n",
|
||||
"import scipy\n",
|
||||
"import numpy as np\n",
|
||||
"from sklearn.decomposition import NMF\n",
|
||||
"from sklearn.discriminant_analysis import LinearDiscriminantAnalysis\n",
|
||||
"from sklearn.cluster import KMeans"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"ename": "ValueError",
|
||||
"evalue": "invalid literal for int() with base 10: ''",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
|
||||
"\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)",
|
||||
"\u001b[1;32me:\\Fall 23\\CSE 515 - Multimedia and web databases\\CSE515_MWDB_Project\\Phase 2\\task5.ipynb Cell 2\u001b[0m line \u001b[0;36m9\n\u001b[0;32m <a href='vscode-notebook-cell:/e%3A/Fall%2023/CSE%20515%20-%20Multimedia%20and%20web%20databases/CSE515_MWDB_Project/Phase%202/task5.ipynb#W1sZmlsZQ%3D%3D?line=88'>89</a>\u001b[0m extractKLatentSemantics(k, label_sim_matrix, feature_model, dim_reduction)\n\u001b[0;32m <a href='vscode-notebook-cell:/e%3A/Fall%2023/CSE%20515%20-%20Multimedia%20and%20web%20databases/CSE515_MWDB_Project/Phase%202/task5.ipynb#W1sZmlsZQ%3D%3D?line=92'>93</a>\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39m__name__\u001b[39m \u001b[39m==\u001b[39m \u001b[39m\"\u001b[39m\u001b[39m__main__\u001b[39m\u001b[39m\"\u001b[39m:\n\u001b[1;32m---> <a href='vscode-notebook-cell:/e%3A/Fall%2023/CSE%20515%20-%20Multimedia%20and%20web%20databases/CSE515_MWDB_Project/Phase%202/task5.ipynb#W1sZmlsZQ%3D%3D?line=93'>94</a>\u001b[0m main()\n",
|
||||
"\u001b[1;32me:\\Fall 23\\CSE 515 - Multimedia and web databases\\CSE515_MWDB_Project\\Phase 2\\task5.ipynb Cell 2\u001b[0m line \u001b[0;36m6\n\u001b[0;32m <a href='vscode-notebook-cell:/e%3A/Fall%2023/CSE%20515%20-%20Multimedia%20and%20web%20databases/CSE515_MWDB_Project/Phase%202/task5.ipynb#W1sZmlsZQ%3D%3D?line=66'>67</a>\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mmain\u001b[39m():\n\u001b[1;32m---> <a href='vscode-notebook-cell:/e%3A/Fall%2023/CSE%20515%20-%20Multimedia%20and%20web%20databases/CSE515_MWDB_Project/Phase%202/task5.ipynb#W1sZmlsZQ%3D%3D?line=68'>69</a>\u001b[0m k \u001b[39m=\u001b[39m \u001b[39mint\u001b[39;49m(\u001b[39minput\u001b[39;49m(\u001b[39m\"\u001b[39;49m\u001b[39mEnter k: \u001b[39;49m\u001b[39m\"\u001b[39;49m))\n\u001b[0;32m <a href='vscode-notebook-cell:/e%3A/Fall%2023/CSE%20515%20-%20Multimedia%20and%20web%20databases/CSE515_MWDB_Project/Phase%202/task5.ipynb#W1sZmlsZQ%3D%3D?line=70'>71</a>\u001b[0m features \u001b[39m=\u001b[39m [\u001b[39m'\u001b[39m\u001b[39mcolor_moments\u001b[39m\u001b[39m'\u001b[39m, \u001b[39m'\u001b[39m\u001b[39mhog\u001b[39m\u001b[39m'\u001b[39m, \u001b[39m'\u001b[39m\u001b[39mlayer3\u001b[39m\u001b[39m'\u001b[39m, \u001b[39m'\u001b[39m\u001b[39mavgpool\u001b[39m\u001b[39m'\u001b[39m, \u001b[39m'\u001b[39m\u001b[39mfc\u001b[39m\u001b[39m'\u001b[39m]\n\u001b[0;32m <a href='vscode-notebook-cell:/e%3A/Fall%2023/CSE%20515%20-%20Multimedia%20and%20web%20databases/CSE515_MWDB_Project/Phase%202/task5.ipynb#W1sZmlsZQ%3D%3D?line=72'>73</a>\u001b[0m \u001b[39m# User input for feature model to extract\u001b[39;00m\n",
|
||||
"\u001b[1;31mValueError\u001b[0m: invalid literal for int() with base 10: ''"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"client = MongoClient()\n",
|
||||
"client = MongoClient(host = \"localhost\", port = 27017)\n",
|
||||
"\n",
|
||||
"# Select the database\n",
|
||||
"db = client.Multimedia_Web_DBs\n",
|
||||
"\n",
|
||||
"# Fetch all documents from the collection and then sort them by \"_id\"\n",
|
||||
"feature_descriptors = list(db.Caltech101_Feature_Descriptors.find({}))\n",
|
||||
"feature_descriptors = sorted(list(db.Caltech101_Feature_Descriptors.find({})), key=lambda x: x[\"_id\"], reverse=False)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def extractKLatentSemantics(k, image_sim_matrix, feature_model, dim_reduction):\n",
|
||||
"\n",
|
||||
" feature_ids = [x[\"_id\"] for x in feature_descriptors if x[\"_id\"] % 2 == 0]\n",
|
||||
" feature_labels = [x[\"label\"] for x in feature_descriptors if x[\"_id\"] % 2 == 0]\n",
|
||||
"\n",
|
||||
" filename = 'ls3.json'\n",
|
||||
"\n",
|
||||
" match dim_reduction:\n",
|
||||
"\n",
|
||||
" case 1:\n",
|
||||
" U, S, Vh = scipy.sparse.linalg.svds(np.array(image_sim_matrix), k=k)\n",
|
||||
" k_latent_semantics = sorted(list(zip(feature_ids, U.tolist())), key = lambda x: x[1][0], reverse = True)\n",
|
||||
"\n",
|
||||
" case 2:\n",
|
||||
" model = NMF(n_components = k, init = 'random', solver = 'cd', alpha_H = 0.01, alpha_W = 0.01, max_iter = 10000)\n",
|
||||
" min_value = np.min(image_sim_matrix)\n",
|
||||
" feature_vectors_shifted = image_sim_matrix - min_value\n",
|
||||
" U = model.fit_transform(np.array(feature_vectors_shifted))\n",
|
||||
" k_latent_semantics = sorted(list(zip(feature_ids, U.tolist())), key = lambda x: x[1][0], reverse = True)\n",
|
||||
"\n",
|
||||
" case 3:\n",
|
||||
" U = LinearDiscriminantAnalysis(n_components = k).fit_transform(image_sim_matrix, feature_labels)\n",
|
||||
" k_latent_semantics = sorted(list(zip(feature_ids, U.tolist())), key = lambda x: x[1][0], reverse = True)\n",
|
||||
"\n",
|
||||
" case 4:\n",
|
||||
" kmeans = KMeans(n_clusters = k)\n",
|
||||
" kmeans.fit(image_sim_matrix)\n",
|
||||
" U = kmeans.transform(image_sim_matrix)\n",
|
||||
" k_latent_semantics = sorted(list(zip(feature_ids, U.tolist())), key = lambda x: x[1][0], reverse = True)\n",
|
||||
" \n",
|
||||
" k_latent_semantics = [{\"_id\": item[0], \"semantics\": item[1]} for item in k_latent_semantics]\n",
|
||||
" with open(filename, 'w', encoding='utf-8') as f:\n",
|
||||
" json.dump(k_latent_semantics, f, ensure_ascii = False)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def findLabelLabelSimMatrix(feature_model):\n",
|
||||
"\n",
|
||||
" label_sim_matrix = []\n",
|
||||
" label_mean_vectors = []\n",
|
||||
"\n",
|
||||
" for label in range(101):\n",
|
||||
" label_vectors = [x[feature_model] for x in feature_descriptors if x[\"label\"] == label and x[\"_id\"] % 2 == 0]\n",
|
||||
" mean_vector = [sum(col)/len(col) for col in zip(*label_vectors)]\n",
|
||||
" label_mean_vectors.append(mean_vector)\n",
|
||||
" \n",
|
||||
"\n",
|
||||
" n = len(label_mean_vectors)\n",
|
||||
"\n",
|
||||
" label_sim_matrix = np.zeros((n, n))\n",
|
||||
"\n",
|
||||
" for i in range(n):\n",
|
||||
" for j in range(i + 1, n):\n",
|
||||
"\n",
|
||||
" match feature_model:\n",
|
||||
"\n",
|
||||
" case \"color_moments\":\n",
|
||||
" label_sim_matrix[i][j] = label_sim_matrix[j][i] = math.dist(label_mean_vectors[i], label_mean_vectors[j])\n",
|
||||
" \n",
|
||||
" case \"hog\":\n",
|
||||
" label_sim_matrix[i][j] = label_sim_matrix[j][i] = (np.dot(label_mean_vectors[i], label_mean_vectors[j]) / (np.linalg.norm(label_mean_vectors[i]) * np.linalg.norm(label_mean_vectors[j])))\n",
|
||||
"\n",
|
||||
" case \"avgpool\" | \"layer3\" | \"fc\":\n",
|
||||
" label_sim_matrix[i][j] = label_sim_matrix[j][i] = scipy.stats.pearsonr(label_mean_vectors[i], label_mean_vectors[j]).statistic\n",
|
||||
" \n",
|
||||
" return label_sim_matrix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def main():\n",
|
||||
"\n",
|
||||
" k = int(input(\"Enter k: \"))\n",
|
||||
"\n",
|
||||
" features = ['color_moments', 'hog', 'layer3', 'avgpool', 'fc']\n",
|
||||
"\n",
|
||||
" # User input for feature model to extract\n",
|
||||
" print(\"\\n1: Color moments\")\n",
|
||||
" print(\"2: HOG\")\n",
|
||||
" print(\"3: Resnet50 Avgpool layer\")\n",
|
||||
" print(\"4: Resnet50 Layer 3\")\n",
|
||||
" print(\"5: Resnet50 FC layer\")\n",
|
||||
" feature_model = features[int(input(\"Select the feature model: \")) - 1]\n",
|
||||
"\n",
|
||||
" print(\"\\n1. SVD\")\n",
|
||||
" print(\"2. NNMF\")\n",
|
||||
" print(\"3. LDA\")\n",
|
||||
" print(\"4. k-means\")\n",
|
||||
" dim_reduction = int(input(\"Select the dimensionality reduction technique: \"))\n",
|
||||
"\n",
|
||||
" label_sim_matrix = findLabelLabelSimMatrix(feature_model)\n",
|
||||
"\n",
|
||||
" extractKLatentSemantics(k, label_sim_matrix, feature_model, dim_reduction)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"if __name__ == \"__main__\":\n",
|
||||
" main()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.11.4"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
@ -1,181 +0,0 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import json\n",
|
||||
"import math\n",
|
||||
"from pymongo import MongoClient\n",
|
||||
"import scipy\n",
|
||||
"import numpy as np\n",
|
||||
"from sklearn.decomposition import NMF\n",
|
||||
"from sklearn.discriminant_analysis import LinearDiscriminantAnalysis\n",
|
||||
"from sklearn.cluster import KMeans"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"client = MongoClient()\n",
|
||||
"client = MongoClient(host = \"localhost\", port = 27017)\n",
|
||||
"\n",
|
||||
"# Select the database\n",
|
||||
"db = client.Multimedia_Web_DBs\n",
|
||||
"\n",
|
||||
"# Fetch all documents from the collection and then sort them by \"_id\"\n",
|
||||
"feature_descriptors = list(db.Caltech101_Feature_Descriptors.find({}))\n",
|
||||
"feature_descriptors = sorted(list(db.Caltech101_Feature_Descriptors.find({})), key=lambda x: x[\"_id\"], reverse=False)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def extractKLatentSemantics(k, image_sim_matrix, feature_model, dim_reduction):\n",
|
||||
"\n",
|
||||
" feature_ids = [x[\"_id\"] for x in feature_descriptors if x[\"_id\"] % 2 == 0]\n",
|
||||
" feature_labels = [x[\"label\"] for x in feature_descriptors if x[\"_id\"] % 2 == 0]\n",
|
||||
"\n",
|
||||
" filename = 'ls4.json'\n",
|
||||
"\n",
|
||||
" match dim_reduction:\n",
|
||||
"\n",
|
||||
" case 1:\n",
|
||||
" U, S, Vh = scipy.sparse.linalg.svds(np.array(image_sim_matrix), k=k)\n",
|
||||
" k_latent_semantics = sorted(list(zip(feature_ids, U.tolist())), key = lambda x: x[1][0], reverse = True)\n",
|
||||
"\n",
|
||||
" case 2:\n",
|
||||
" model = NMF(n_components = k, init = 'random', solver = 'cd', alpha_H = 0.01, alpha_W = 0.01, max_iter = 10000)\n",
|
||||
" min_value = np.min(image_sim_matrix)\n",
|
||||
" feature_vectors_shifted = image_sim_matrix - min_value\n",
|
||||
" U = model.fit_transform(np.array(feature_vectors_shifted))\n",
|
||||
" k_latent_semantics = sorted(list(zip(feature_ids, U.tolist())), key = lambda x: x[1][0], reverse = True)\n",
|
||||
"\n",
|
||||
" case 3:\n",
|
||||
" U = LinearDiscriminantAnalysis(n_components = k).fit_transform(image_sim_matrix, feature_labels)\n",
|
||||
" k_latent_semantics = sorted(list(zip(feature_ids, U.tolist())), key = lambda x: x[1][0], reverse = True)\n",
|
||||
"\n",
|
||||
" case 4:\n",
|
||||
" kmeans = KMeans(n_clusters = k)\n",
|
||||
" kmeans.fit(image_sim_matrix)\n",
|
||||
" U = kmeans.transform(image_sim_matrix)\n",
|
||||
" k_latent_semantics = sorted(list(zip(feature_ids, U.tolist())), key = lambda x: x[1][0], reverse = True)\n",
|
||||
" \n",
|
||||
" k_latent_semantics = [{\"_id\": item[0], \"semantics\": item[1]} for item in k_latent_semantics]\n",
|
||||
" with open(filename, 'w', encoding='utf-8') as f:\n",
|
||||
" json.dump(k_latent_semantics, f, ensure_ascii = False)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def findImageImageSimMatrix(feature_model):\n",
|
||||
" \n",
|
||||
" feature_vectors = [x[feature_model] for x in feature_descriptors if x[\"_id\"] % 2 == 0]\n",
|
||||
"\n",
|
||||
" n = len(feature_vectors)\n",
|
||||
"\n",
|
||||
" image_sim_matrix = np.zeros((n, n))\n",
|
||||
"\n",
|
||||
" for i in range(n):\n",
|
||||
" for j in range(i + 1, n):\n",
|
||||
"\n",
|
||||
" match feature_model:\n",
|
||||
"\n",
|
||||
" case \"color_moments\":\n",
|
||||
" image_sim_matrix[i][j] = image_sim_matrix[j][i] = math.dist(feature_vectors[i], feature_vectors[j])\n",
|
||||
" \n",
|
||||
" case \"hog\":\n",
|
||||
" image_sim_matrix[i][j] = image_sim_matrix[j][i] = (np.dot(feature_vectors[i], feature_vectors[j]) / (np.linalg.norm(feature_vectors[i]) * np.linalg.norm(feature_vectors[j])))\n",
|
||||
"\n",
|
||||
" case \"avgpool\" | \"layer3\" | \"fc\":\n",
|
||||
" image_sim_matrix[i][j] = image_sim_matrix[j][i] = scipy.stats.pearsonr(feature_vectors[i], feature_vectors[j]).statistic\n",
|
||||
" \n",
|
||||
" return image_sim_matrix"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"\n",
|
||||
"\n",
|
||||
"def main():\n",
|
||||
"\n",
|
||||
" k = int(input(\"Enter k: \"))\n",
|
||||
"\n",
|
||||
" features = ['color_moments', 'hog', 'layer3', 'avgpool', 'fc']\n",
|
||||
"\n",
|
||||
" # User input for feature model to extract\n",
|
||||
" print(\"\\n1: Color moments\")\n",
|
||||
" print(\"2: HOG\")\n",
|
||||
" print(\"3: Resnet50 Avgpool layer\")\n",
|
||||
" print(\"4: Resnet50 Layer 3\")\n",
|
||||
" print(\"5: Resnet50 FC layer\")\n",
|
||||
" feature_model = features[int(input(\"Select the feature model: \")) - 1]\n",
|
||||
"\n",
|
||||
" print(\"\\n1. SVD\")\n",
|
||||
" print(\"2. NNMF\")\n",
|
||||
" print(\"3. LDA\")\n",
|
||||
" print(\"4. k-means\")\n",
|
||||
" dim_reduction = int(input(\"Select the dimensionality reduction technique: \"))\n",
|
||||
"\n",
|
||||
" image_sim_matrix = findImageImageSimMatrix(feature_model)\n",
|
||||
" print(image_sim_matrix)\n",
|
||||
"\n",
|
||||
" extractKLatentSemantics(k, image_sim_matrix, feature_model, dim_reduction)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"if __name__ == \"__main__\":\n",
|
||||
" main()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.11.4"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
@ -29,120 +29,119 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Applying kmeans on the resnet_fd space to get 10 latent semantics (showing only top 10 image-weight pairs for each latent semantic)...\n",
|
||||
"Applying kmeans on the cm_fd space to get 10 latent semantics (showing only top 10 image-weight pairs for each latent semantic)...\n",
|
||||
"Initialized centroids\n",
|
||||
"Iteration 56 - Converged\n",
|
||||
"Note: for K-Means we display distances, in ascending order\n",
|
||||
"Latent semantic no. 0\n",
|
||||
"Image_ID\t440\t-\tDistance\t10.640763416796371\n",
|
||||
"Image_ID\t700\t-\tDistance\t11.159224514655602\n",
|
||||
"Image_ID\t654\t-\tDistance\t11.395135539610168\n",
|
||||
"Image_ID\t486\t-\tDistance\t11.550858382118225\n",
|
||||
"Image_ID\t462\t-\tDistance\t11.61044182679253\n",
|
||||
"Image_ID\t652\t-\tDistance\t11.818427599783789\n",
|
||||
"Image_ID\t676\t-\tDistance\t11.925768133017636\n",
|
||||
"Image_ID\t584\t-\tDistance\t11.93319861884516\n",
|
||||
"Image_ID\t692\t-\tDistance\t11.979693069110743\n",
|
||||
"Image_ID\t6\t-\tDistance\t12.137562566975056\n",
|
||||
"Image_ID\t2406\t-\tDistance\t2.4329297906521914\n",
|
||||
"Image_ID\t2624\t-\tDistance\t2.4610601036735282\n",
|
||||
"Image_ID\t7112\t-\tDistance\t2.5837781069798633\n",
|
||||
"Image_ID\t5390\t-\tDistance\t2.60890832624663\n",
|
||||
"Image_ID\t4782\t-\tDistance\t2.6300363909906017\n",
|
||||
"Image_ID\t4218\t-\tDistance\t2.6526211985836103\n",
|
||||
"Image_ID\t4210\t-\tDistance\t2.6581936664893533\n",
|
||||
"Image_ID\t944\t-\tDistance\t2.7472085431102213\n",
|
||||
"Image_ID\t6600\t-\tDistance\t2.788716977448917\n",
|
||||
"Image_ID\t2398\t-\tDistance\t2.797045487845613\n",
|
||||
"Latent semantic no. 1\n",
|
||||
"Image_ID\t3602\t-\tDistance\t13.563162479981145\n",
|
||||
"Image_ID\t2414\t-\tDistance\t14.192224338224467\n",
|
||||
"Image_ID\t3560\t-\tDistance\t14.205420291205272\n",
|
||||
"Image_ID\t3600\t-\tDistance\t14.389262503144405\n",
|
||||
"Image_ID\t2228\t-\tDistance\t14.4828087393621\n",
|
||||
"Image_ID\t3636\t-\tDistance\t14.497503774497243\n",
|
||||
"Image_ID\t3614\t-\tDistance\t14.591251785931954\n",
|
||||
"Image_ID\t2090\t-\tDistance\t14.620114150279178\n",
|
||||
"Image_ID\t2328\t-\tDistance\t14.69159730598465\n",
|
||||
"Image_ID\t2448\t-\tDistance\t14.774950728597261\n",
|
||||
"Image_ID\t5826\t-\tDistance\t1.7730956906058473\n",
|
||||
"Image_ID\t3944\t-\tDistance\t1.8750448829509372\n",
|
||||
"Image_ID\t968\t-\tDistance\t1.9655862567434115\n",
|
||||
"Image_ID\t1068\t-\tDistance\t1.9677696006956515\n",
|
||||
"Image_ID\t5664\t-\tDistance\t2.0908245587325114\n",
|
||||
"Image_ID\t7392\t-\tDistance\t2.1187697478953686\n",
|
||||
"Image_ID\t3304\t-\tDistance\t2.154265483459674\n",
|
||||
"Image_ID\t1008\t-\tDistance\t2.2197924178276014\n",
|
||||
"Image_ID\t908\t-\tDistance\t2.237300492325052\n",
|
||||
"Image_ID\t2940\t-\tDistance\t2.2377555386247865\n",
|
||||
"Latent semantic no. 2\n",
|
||||
"Image_ID\t4838\t-\tDistance\t12.261260721990451\n",
|
||||
"Image_ID\t7302\t-\tDistance\t12.880136852617754\n",
|
||||
"Image_ID\t7978\t-\tDistance\t13.077993711608961\n",
|
||||
"Image_ID\t8600\t-\tDistance\t13.305290839761437\n",
|
||||
"Image_ID\t7292\t-\tDistance\t13.334716062864114\n",
|
||||
"Image_ID\t7720\t-\tDistance\t13.37155798887382\n",
|
||||
"Image_ID\t7958\t-\tDistance\t13.430323190148206\n",
|
||||
"Image_ID\t4600\t-\tDistance\t13.45781162474979\n",
|
||||
"Image_ID\t4270\t-\tDistance\t13.491427681265899\n",
|
||||
"Image_ID\t4828\t-\tDistance\t13.539053205319615\n",
|
||||
"Image_ID\t2406\t-\tDistance\t2.1258319537256445\n",
|
||||
"Image_ID\t6922\t-\tDistance\t2.2011613151345975\n",
|
||||
"Image_ID\t2624\t-\tDistance\t2.2289354011778006\n",
|
||||
"Image_ID\t6484\t-\tDistance\t2.2515469285749545\n",
|
||||
"Image_ID\t5390\t-\tDistance\t2.451999872498352\n",
|
||||
"Image_ID\t4222\t-\tDistance\t2.4690306175362067\n",
|
||||
"Image_ID\t5038\t-\tDistance\t2.4722970669139785\n",
|
||||
"Image_ID\t3196\t-\tDistance\t2.475614158419068\n",
|
||||
"Image_ID\t462\t-\tDistance\t2.49778761746267\n",
|
||||
"Image_ID\t7380\t-\tDistance\t2.5265238831399635\n",
|
||||
"Latent semantic no. 3\n",
|
||||
"Image_ID\t1758\t-\tDistance\t5.030040634300718\n",
|
||||
"Image_ID\t1562\t-\tDistance\t5.3329050871004755\n",
|
||||
"Image_ID\t1586\t-\tDistance\t5.583507266395663\n",
|
||||
"Image_ID\t1362\t-\tDistance\t6.017196001905923\n",
|
||||
"Image_ID\t1626\t-\tDistance\t6.045998053427588\n",
|
||||
"Image_ID\t1208\t-\tDistance\t6.051540458349612\n",
|
||||
"Image_ID\t1374\t-\tDistance\t6.178242313742901\n",
|
||||
"Image_ID\t1112\t-\tDistance\t6.249956790411116\n",
|
||||
"Image_ID\t1710\t-\tDistance\t6.310688634541122\n",
|
||||
"Image_ID\t1490\t-\tDistance\t6.376123320547912\n",
|
||||
"Image_ID\t2412\t-\tDistance\t1.9079653649524306\n",
|
||||
"Image_ID\t2138\t-\tDistance\t1.9508782175940445\n",
|
||||
"Image_ID\t2290\t-\tDistance\t1.9526171427482104\n",
|
||||
"Image_ID\t2302\t-\tDistance\t1.9769105940849563\n",
|
||||
"Image_ID\t2640\t-\tDistance\t2.0476236872823406\n",
|
||||
"Image_ID\t2634\t-\tDistance\t2.058811198055415\n",
|
||||
"Image_ID\t2648\t-\tDistance\t2.0779524915237726\n",
|
||||
"Image_ID\t2628\t-\tDistance\t2.1411367238671497\n",
|
||||
"Image_ID\t2630\t-\tDistance\t2.156701968346356\n",
|
||||
"Image_ID\t2502\t-\tDistance\t2.1813059883906454\n",
|
||||
"Latent semantic no. 4\n",
|
||||
"Image_ID\t8282\t-\tDistance\t10.506907762007522\n",
|
||||
"Image_ID\t8348\t-\tDistance\t10.647963471647738\n",
|
||||
"Image_ID\t8380\t-\tDistance\t10.715093501411761\n",
|
||||
"Image_ID\t8228\t-\tDistance\t10.879515968086416\n",
|
||||
"Image_ID\t8240\t-\tDistance\t10.896279105885796\n",
|
||||
"Image_ID\t8340\t-\tDistance\t10.952943877775777\n",
|
||||
"Image_ID\t8174\t-\tDistance\t11.012538653878869\n",
|
||||
"Image_ID\t8368\t-\tDistance\t11.01584931675634\n",
|
||||
"Image_ID\t8176\t-\tDistance\t11.074708303511043\n",
|
||||
"Image_ID\t8386\t-\tDistance\t11.090905861600216\n",
|
||||
"Image_ID\t2528\t-\tDistance\t1.985388167407023\n",
|
||||
"Image_ID\t2570\t-\tDistance\t2.020441033596718\n",
|
||||
"Image_ID\t7000\t-\tDistance\t2.0389617509774554\n",
|
||||
"Image_ID\t2544\t-\tDistance\t2.0461546917978493\n",
|
||||
"Image_ID\t6946\t-\tDistance\t2.087028769480915\n",
|
||||
"Image_ID\t5070\t-\tDistance\t2.093563899781913\n",
|
||||
"Image_ID\t3884\t-\tDistance\t2.12383247213783\n",
|
||||
"Image_ID\t6662\t-\tDistance\t2.133611417276695\n",
|
||||
"Image_ID\t5584\t-\tDistance\t2.134813594870179\n",
|
||||
"Image_ID\t7592\t-\tDistance\t2.1350058409043253\n",
|
||||
"Latent semantic no. 5\n",
|
||||
"Image_ID\t7400\t-\tDistance\t9.07340282234228\n",
|
||||
"Image_ID\t7332\t-\tDistance\t9.27997555888011\n",
|
||||
"Image_ID\t6626\t-\tDistance\t9.490015364667478\n",
|
||||
"Image_ID\t7990\t-\tDistance\t9.619812101313876\n",
|
||||
"Image_ID\t7392\t-\tDistance\t9.640980435311661\n",
|
||||
"Image_ID\t7404\t-\tDistance\t9.6738734363643\n",
|
||||
"Image_ID\t7980\t-\tDistance\t9.710518881249477\n",
|
||||
"Image_ID\t7410\t-\tDistance\t9.778693486707565\n",
|
||||
"Image_ID\t7950\t-\tDistance\t9.785247539262517\n",
|
||||
"Image_ID\t7346\t-\tDistance\t9.806294880503\n",
|
||||
"Image_ID\t2406\t-\tDistance\t1.7192989054765462\n",
|
||||
"Image_ID\t7736\t-\tDistance\t1.8415960899814483\n",
|
||||
"Image_ID\t2624\t-\tDistance\t1.890325981685572\n",
|
||||
"Image_ID\t4782\t-\tDistance\t1.947887574583758\n",
|
||||
"Image_ID\t2434\t-\tDistance\t2.012480907684106\n",
|
||||
"Image_ID\t5658\t-\tDistance\t2.0159295631755936\n",
|
||||
"Image_ID\t5632\t-\tDistance\t2.0209799503972894\n",
|
||||
"Image_ID\t5390\t-\tDistance\t2.054049699587572\n",
|
||||
"Image_ID\t3762\t-\tDistance\t2.0632381421057997\n",
|
||||
"Image_ID\t6922\t-\tDistance\t2.1324100407425832\n",
|
||||
"Latent semantic no. 6\n",
|
||||
"Image_ID\t8542\t-\tDistance\t11.232961895055158\n",
|
||||
"Image_ID\t6014\t-\tDistance\t11.304802835945505\n",
|
||||
"Image_ID\t8566\t-\tDistance\t11.443919577851908\n",
|
||||
"Image_ID\t7200\t-\tDistance\t11.484387898391537\n",
|
||||
"Image_ID\t6626\t-\tDistance\t11.48886846539337\n",
|
||||
"Image_ID\t6620\t-\tDistance\t11.578369802598303\n",
|
||||
"Image_ID\t6636\t-\tDistance\t11.662783932711658\n",
|
||||
"Image_ID\t8056\t-\tDistance\t11.74943673802499\n",
|
||||
"Image_ID\t7700\t-\tDistance\t11.769992973787971\n",
|
||||
"Image_ID\t6622\t-\tDistance\t11.780162710805048\n",
|
||||
"Image_ID\t7244\t-\tDistance\t2.0882730827827514\n",
|
||||
"Image_ID\t7256\t-\tDistance\t2.2363345183902643\n",
|
||||
"Image_ID\t6946\t-\tDistance\t2.2626049811136104\n",
|
||||
"Image_ID\t7232\t-\tDistance\t2.3287228186618827\n",
|
||||
"Image_ID\t7260\t-\tDistance\t2.432017355562297\n",
|
||||
"Image_ID\t4942\t-\tDistance\t2.5360228464626915\n",
|
||||
"Image_ID\t3194\t-\tDistance\t2.652196198820196\n",
|
||||
"Image_ID\t4946\t-\tDistance\t2.707800015244559\n",
|
||||
"Image_ID\t6972\t-\tDistance\t2.772167403532193\n",
|
||||
"Image_ID\t3822\t-\tDistance\t2.7757540939652245\n",
|
||||
"Latent semantic no. 7\n",
|
||||
"Image_ID\t2646\t-\tDistance\t7.514711553618432\n",
|
||||
"Image_ID\t2260\t-\tDistance\t7.633993639248322\n",
|
||||
"Image_ID\t2460\t-\tDistance\t7.685809907469392\n",
|
||||
"Image_ID\t2660\t-\tDistance\t7.701780256364207\n",
|
||||
"Image_ID\t2418\t-\tDistance\t7.716363257255012\n",
|
||||
"Image_ID\t2240\t-\tDistance\t7.74734521250179\n",
|
||||
"Image_ID\t2430\t-\tDistance\t7.784825198465868\n",
|
||||
"Image_ID\t2264\t-\tDistance\t7.828411523843045\n",
|
||||
"Image_ID\t2242\t-\tDistance\t7.878806112518542\n",
|
||||
"Image_ID\t2196\t-\tDistance\t7.918897962650677\n",
|
||||
"Image_ID\t1234\t-\tDistance\t2.5103511852585627\n",
|
||||
"Image_ID\t1406\t-\tDistance\t2.5905943688502\n",
|
||||
"Image_ID\t1582\t-\tDistance\t2.64691846983913\n",
|
||||
"Image_ID\t1844\t-\tDistance\t2.741629768608531\n",
|
||||
"Image_ID\t1638\t-\tDistance\t2.7657226276060536\n",
|
||||
"Image_ID\t1154\t-\tDistance\t2.8386700997389043\n",
|
||||
"Image_ID\t1286\t-\tDistance\t2.8446264818255877\n",
|
||||
"Image_ID\t1848\t-\tDistance\t2.8793700988824398\n",
|
||||
"Image_ID\t1284\t-\tDistance\t2.879846330398362\n",
|
||||
"Image_ID\t1592\t-\tDistance\t2.8822966091246407\n",
|
||||
"Latent semantic no. 8\n",
|
||||
"Image_ID\t562\t-\tDistance\t8.552732623243445\n",
|
||||
"Image_ID\t796\t-\tDistance\t9.316343355329956\n",
|
||||
"Image_ID\t612\t-\tDistance\t9.451362646413244\n",
|
||||
"Image_ID\t476\t-\tDistance\t9.458717454426738\n",
|
||||
"Image_ID\t798\t-\tDistance\t9.853412912988212\n",
|
||||
"Image_ID\t460\t-\tDistance\t9.859458462429464\n",
|
||||
"Image_ID\t190\t-\tDistance\t10.065071186269668\n",
|
||||
"Image_ID\t462\t-\tDistance\t10.065893471754435\n",
|
||||
"Image_ID\t456\t-\tDistance\t10.099056881970604\n",
|
||||
"Image_ID\t828\t-\tDistance\t10.29276769283984\n",
|
||||
"Image_ID\t7686\t-\tDistance\t2.3114266143360425\n",
|
||||
"Image_ID\t4286\t-\tDistance\t2.3193670377796534\n",
|
||||
"Image_ID\t7974\t-\tDistance\t2.410584599384146\n",
|
||||
"Image_ID\t7668\t-\tDistance\t2.4392449505107026\n",
|
||||
"Image_ID\t3262\t-\tDistance\t2.4432361382128236\n",
|
||||
"Image_ID\t7856\t-\tDistance\t2.484388558904672\n",
|
||||
"Image_ID\t6250\t-\tDistance\t2.5139181727884887\n",
|
||||
"Image_ID\t6982\t-\tDistance\t2.522220046130116\n",
|
||||
"Image_ID\t4032\t-\tDistance\t2.5671693188571254\n",
|
||||
"Image_ID\t8610\t-\tDistance\t2.592334945993663\n",
|
||||
"Latent semantic no. 9\n",
|
||||
"Image_ID\t3124\t-\tDistance\t12.500361886870435\n",
|
||||
"Image_ID\t8064\t-\tDistance\t12.967833703429173\n",
|
||||
"Image_ID\t4270\t-\tDistance\t13.225230811650766\n",
|
||||
"Image_ID\t7720\t-\tDistance\t13.340802785257075\n",
|
||||
"Image_ID\t8050\t-\tDistance\t13.601572206798334\n",
|
||||
"Image_ID\t8074\t-\tDistance\t13.693355761074226\n",
|
||||
"Image_ID\t8042\t-\tDistance\t13.72102497292387\n",
|
||||
"Image_ID\t6450\t-\tDistance\t13.750626256669166\n",
|
||||
"Image_ID\t8018\t-\tDistance\t13.768703250806348\n",
|
||||
"Image_ID\t6628\t-\tDistance\t13.784107713433421\n"
|
||||
"Image_ID\t8656\t-\tDistance\t0.0\n",
|
||||
"Image_ID\t5314\t-\tDistance\t7.545361629760217\n",
|
||||
"Image_ID\t7854\t-\tDistance\t7.706317148014618\n",
|
||||
"Image_ID\t712\t-\tDistance\t7.812246024712053\n",
|
||||
"Image_ID\t8170\t-\tDistance\t7.940921127343809\n",
|
||||
"Image_ID\t496\t-\tDistance\t7.95303740274659\n",
|
||||
"Image_ID\t662\t-\tDistance\t7.976573111687378\n",
|
||||
"Image_ID\t3188\t-\tDistance\t7.9858733547811935\n",
|
||||
"Image_ID\t3116\t-\tDistance\t8.012971090439164\n",
|
||||
"Image_ID\t3078\t-\tDistance\t8.023521594743528\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@ -195,7 +194,7 @@
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.10.5"
|
||||
"version": "3.11.4"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
@ -13,7 +13,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
@ -22,9 +22,351 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Applying CP decomposition on the cm_fd space to get 10 latent semantics (showing only top 10 image-weight pairs for each latent semantic)...\n",
|
||||
"(4339, 900, 101)\n",
|
||||
"Showing image-weight latent semantic\n",
|
||||
"Latent semantic no. 0\n",
|
||||
"image\t823\t-\tweight\t0.06101574157129977\n",
|
||||
"image\t809\t-\tweight\t0.06062830674568429\n",
|
||||
"image\t806\t-\tweight\t0.060448512391290884\n",
|
||||
"image\t832\t-\tweight\t0.06044200170224582\n",
|
||||
"image\t830\t-\tweight\t0.06028043498591822\n",
|
||||
"image\t808\t-\tweight\t0.06026752408221666\n",
|
||||
"image\t772\t-\tweight\t0.06021140705672949\n",
|
||||
"image\t750\t-\tweight\t0.060162025437143496\n",
|
||||
"image\t844\t-\tweight\t0.060101929899988096\n",
|
||||
"image\t784\t-\tweight\t0.06003388853666149\n",
|
||||
"Latent semantic no. 1\n",
|
||||
"image\t980\t-\tweight\t0.0754118902341204\n",
|
||||
"image\t1084\t-\tweight\t0.07362125136812943\n",
|
||||
"image\t1011\t-\tweight\t0.06967853969554338\n",
|
||||
"image\t997\t-\tweight\t0.06873541509302017\n",
|
||||
"image\t1065\t-\tweight\t0.06811244748351335\n",
|
||||
"image\t1184\t-\tweight\t0.06715708987702379\n",
|
||||
"image\t1053\t-\tweight\t0.06697645698011236\n",
|
||||
"image\t962\t-\tweight\t0.06677715910430597\n",
|
||||
"image\t1287\t-\tweight\t0.06650715541378867\n",
|
||||
"image\t968\t-\tweight\t0.065552599099574\n",
|
||||
"Latent semantic no. 2\n",
|
||||
"image\t0\t-\tweight\t0.0\n",
|
||||
"image\t1\t-\tweight\t0.0\n",
|
||||
"image\t2\t-\tweight\t0.0\n",
|
||||
"image\t3\t-\tweight\t0.0\n",
|
||||
"image\t4\t-\tweight\t0.0\n",
|
||||
"image\t5\t-\tweight\t0.0\n",
|
||||
"image\t6\t-\tweight\t0.0\n",
|
||||
"image\t7\t-\tweight\t0.0\n",
|
||||
"image\t8\t-\tweight\t0.0\n",
|
||||
"image\t9\t-\tweight\t0.0\n",
|
||||
"Latent semantic no. 3\n",
|
||||
"image\t218\t-\tweight\t0.0\n",
|
||||
"image\t219\t-\tweight\t0.0\n",
|
||||
"image\t220\t-\tweight\t0.0\n",
|
||||
"image\t221\t-\tweight\t0.0\n",
|
||||
"image\t222\t-\tweight\t0.0\n",
|
||||
"image\t223\t-\tweight\t0.0\n",
|
||||
"image\t224\t-\tweight\t0.0\n",
|
||||
"image\t225\t-\tweight\t0.0\n",
|
||||
"image\t226\t-\tweight\t0.0\n",
|
||||
"image\t227\t-\tweight\t0.0\n",
|
||||
"Latent semantic no. 4\n",
|
||||
"image\t4178\t-\tweight\t0.13411466061203375\n",
|
||||
"image\t4133\t-\tweight\t0.13381869962849108\n",
|
||||
"image\t4186\t-\tweight\t0.1328204635772519\n",
|
||||
"image\t4112\t-\tweight\t0.13246858130287337\n",
|
||||
"image\t4165\t-\tweight\t0.13047834274654035\n",
|
||||
"image\t4096\t-\tweight\t0.12970904464417174\n",
|
||||
"image\t4130\t-\tweight\t0.1276357487547854\n",
|
||||
"image\t4163\t-\tweight\t0.12611220410021198\n",
|
||||
"image\t4175\t-\tweight\t0.12609814994237703\n",
|
||||
"image\t4125\t-\tweight\t0.12492475451893506\n",
|
||||
"Latent semantic no. 5\n",
|
||||
"image\t0\t-\tweight\t0.0\n",
|
||||
"image\t1\t-\tweight\t0.0\n",
|
||||
"image\t2\t-\tweight\t0.0\n",
|
||||
"image\t3\t-\tweight\t0.0\n",
|
||||
"image\t4\t-\tweight\t0.0\n",
|
||||
"image\t5\t-\tweight\t0.0\n",
|
||||
"image\t6\t-\tweight\t0.0\n",
|
||||
"image\t7\t-\tweight\t0.0\n",
|
||||
"image\t8\t-\tweight\t0.0\n",
|
||||
"image\t9\t-\tweight\t0.0\n",
|
||||
"Latent semantic no. 6\n",
|
||||
"image\t0\t-\tweight\t0.0\n",
|
||||
"image\t1\t-\tweight\t0.0\n",
|
||||
"image\t2\t-\tweight\t0.0\n",
|
||||
"image\t3\t-\tweight\t0.0\n",
|
||||
"image\t4\t-\tweight\t0.0\n",
|
||||
"image\t5\t-\tweight\t0.0\n",
|
||||
"image\t6\t-\tweight\t0.0\n",
|
||||
"image\t7\t-\tweight\t0.0\n",
|
||||
"image\t8\t-\tweight\t0.0\n",
|
||||
"image\t9\t-\tweight\t0.0\n",
|
||||
"Latent semantic no. 7\n",
|
||||
"image\t0\t-\tweight\t0.0\n",
|
||||
"image\t1\t-\tweight\t0.0\n",
|
||||
"image\t2\t-\tweight\t0.0\n",
|
||||
"image\t3\t-\tweight\t0.0\n",
|
||||
"image\t4\t-\tweight\t0.0\n",
|
||||
"image\t5\t-\tweight\t0.0\n",
|
||||
"image\t6\t-\tweight\t0.0\n",
|
||||
"image\t7\t-\tweight\t0.0\n",
|
||||
"image\t8\t-\tweight\t0.0\n",
|
||||
"image\t9\t-\tweight\t0.0\n",
|
||||
"Latent semantic no. 8\n",
|
||||
"image\t0\t-\tweight\t0.0\n",
|
||||
"image\t1\t-\tweight\t0.0\n",
|
||||
"image\t2\t-\tweight\t0.0\n",
|
||||
"image\t3\t-\tweight\t0.0\n",
|
||||
"image\t4\t-\tweight\t0.0\n",
|
||||
"image\t5\t-\tweight\t0.0\n",
|
||||
"image\t6\t-\tweight\t0.0\n",
|
||||
"image\t7\t-\tweight\t0.0\n",
|
||||
"image\t8\t-\tweight\t0.0\n",
|
||||
"image\t9\t-\tweight\t0.0\n",
|
||||
"Latent semantic no. 9\n",
|
||||
"image\t0\t-\tweight\t0.0\n",
|
||||
"image\t1\t-\tweight\t0.0\n",
|
||||
"image\t2\t-\tweight\t0.0\n",
|
||||
"image\t3\t-\tweight\t0.0\n",
|
||||
"image\t4\t-\tweight\t0.0\n",
|
||||
"image\t5\t-\tweight\t0.0\n",
|
||||
"image\t6\t-\tweight\t0.0\n",
|
||||
"image\t7\t-\tweight\t0.0\n",
|
||||
"image\t8\t-\tweight\t0.0\n",
|
||||
"image\t9\t-\tweight\t0.0\n",
|
||||
"Showing feature-weight latent semantic\n",
|
||||
"Latent semantic no. 0\n",
|
||||
"feature\t0\t-\tweight\t0.07577182824380883\n",
|
||||
"feature\t9\t-\tweight\t0.07573677778472039\n",
|
||||
"feature\t3\t-\tweight\t0.07557126037394385\n",
|
||||
"feature\t6\t-\tweight\t0.0753781982199277\n",
|
||||
"feature\t7\t-\tweight\t0.0001951950616295707\n",
|
||||
"feature\t4\t-\tweight\t0.00017549416192999285\n",
|
||||
"feature\t1\t-\tweight\t0.00012194961415249631\n",
|
||||
"feature\t2\t-\tweight\t4.287652912002155e-06\n",
|
||||
"feature\t8\t-\tweight\t-2.314815116961173e-06\n",
|
||||
"feature\t5\t-\tweight\t-5.197417109414247e-06\n",
|
||||
"Latent semantic no. 1\n",
|
||||
"feature\t9\t-\tweight\t0.09115512060365509\n",
|
||||
"feature\t0\t-\tweight\t0.09113096158559393\n",
|
||||
"feature\t3\t-\tweight\t0.09044159243667037\n",
|
||||
"feature\t6\t-\tweight\t0.09018059343754826\n",
|
||||
"feature\t7\t-\tweight\t0.0021130646053269977\n",
|
||||
"feature\t4\t-\tweight\t0.002030234496532767\n",
|
||||
"feature\t1\t-\tweight\t0.002009281088063933\n",
|
||||
"feature\t5\t-\tweight\t-0.0006594073704548895\n",
|
||||
"feature\t2\t-\tweight\t-0.0006852646011520126\n",
|
||||
"feature\t8\t-\tweight\t-0.0007029010314333884\n",
|
||||
"Latent semantic no. 2\n",
|
||||
"feature\t2\t-\tweight\t0.0017202269882332225\n",
|
||||
"feature\t5\t-\tweight\t0.0012782693995776035\n",
|
||||
"feature\t8\t-\tweight\t0.0011056757480729573\n",
|
||||
"feature\t4\t-\tweight\t-0.008186797881888055\n",
|
||||
"feature\t1\t-\tweight\t-0.008219352401356154\n",
|
||||
"feature\t7\t-\tweight\t-0.0082326697588083\n",
|
||||
"feature\t6\t-\tweight\t-0.052967486759999564\n",
|
||||
"feature\t0\t-\tweight\t-0.053269849112101635\n",
|
||||
"feature\t3\t-\tweight\t-0.053314794168011104\n",
|
||||
"feature\t9\t-\tweight\t-0.054790922702571875\n",
|
||||
"Latent semantic no. 3\n",
|
||||
"feature\t8\t-\tweight\t0.0012457435033955949\n",
|
||||
"feature\t5\t-\tweight\t0.0011302318267326496\n",
|
||||
"feature\t2\t-\tweight\t0.0008915556276299796\n",
|
||||
"feature\t1\t-\tweight\t-0.0067143893348969585\n",
|
||||
"feature\t7\t-\tweight\t-0.006979411165292033\n",
|
||||
"feature\t4\t-\tweight\t-0.007115085250947199\n",
|
||||
"feature\t9\t-\tweight\t-0.04627063193585373\n",
|
||||
"feature\t0\t-\tweight\t-0.04669584380231813\n",
|
||||
"feature\t3\t-\tweight\t-0.05358789010258499\n",
|
||||
"feature\t6\t-\tweight\t-0.05372707309592606\n",
|
||||
"Latent semantic no. 4\n",
|
||||
"feature\t9\t-\tweight\t0.06636728404803105\n",
|
||||
"feature\t0\t-\tweight\t0.06602164959781295\n",
|
||||
"feature\t6\t-\tweight\t0.0658680657426211\n",
|
||||
"feature\t3\t-\tweight\t0.0658246292439607\n",
|
||||
"feature\t7\t-\tweight\t0.0024698135167617423\n",
|
||||
"feature\t1\t-\tweight\t0.0024642047114514965\n",
|
||||
"feature\t4\t-\tweight\t0.002441605516788918\n",
|
||||
"feature\t2\t-\tweight\t3.412235539925601e-05\n",
|
||||
"feature\t8\t-\tweight\t3.0388889414075837e-05\n",
|
||||
"feature\t5\t-\tweight\t-3.5221294849889635e-05\n",
|
||||
"Latent semantic no. 5\n",
|
||||
"feature\t2\t-\tweight\t-0.0004406092931454461\n",
|
||||
"feature\t8\t-\tweight\t-0.0004885796160427777\n",
|
||||
"feature\t5\t-\tweight\t-0.00061257112416781\n",
|
||||
"feature\t1\t-\tweight\t-0.007155350004314086\n",
|
||||
"feature\t4\t-\tweight\t-0.007165462449854097\n",
|
||||
"feature\t7\t-\tweight\t-0.007444856783482605\n",
|
||||
"feature\t6\t-\tweight\t-0.06042702105743578\n",
|
||||
"feature\t3\t-\tweight\t-0.06082664033553194\n",
|
||||
"feature\t0\t-\tweight\t-0.061400505754596324\n",
|
||||
"feature\t9\t-\tweight\t-0.06196505846576572\n",
|
||||
"Latent semantic no. 6\n",
|
||||
"feature\t8\t-\tweight\t0.001098350913411075\n",
|
||||
"feature\t2\t-\tweight\t0.0010016779555276794\n",
|
||||
"feature\t5\t-\tweight\t0.0005821006414327626\n",
|
||||
"feature\t4\t-\tweight\t-0.005900355271379414\n",
|
||||
"feature\t1\t-\tweight\t-0.00598284109579637\n",
|
||||
"feature\t7\t-\tweight\t-0.0061876362657868585\n",
|
||||
"feature\t0\t-\tweight\t-0.06848064266828655\n",
|
||||
"feature\t3\t-\tweight\t-0.06851566211382039\n",
|
||||
"feature\t6\t-\tweight\t-0.0686464268816822\n",
|
||||
"feature\t9\t-\tweight\t-0.0692640377395642\n",
|
||||
"Latent semantic no. 7\n",
|
||||
"feature\t5\t-\tweight\t0.0017254022262197148\n",
|
||||
"feature\t8\t-\tweight\t0.001702794313355738\n",
|
||||
"feature\t2\t-\tweight\t0.0003159487432469688\n",
|
||||
"feature\t1\t-\tweight\t-0.0020164365697178\n",
|
||||
"feature\t4\t-\tweight\t-0.0027621541654151115\n",
|
||||
"feature\t7\t-\tweight\t-0.002853145862649653\n",
|
||||
"feature\t0\t-\tweight\t-0.06195980356747699\n",
|
||||
"feature\t9\t-\tweight\t-0.06199428708500771\n",
|
||||
"feature\t6\t-\tweight\t-0.06368714708105448\n",
|
||||
"feature\t3\t-\tweight\t-0.06385832819997592\n",
|
||||
"Latent semantic no. 8\n",
|
||||
"feature\t5\t-\tweight\t0.000579681022086685\n",
|
||||
"feature\t8\t-\tweight\t0.00023776162317446615\n",
|
||||
"feature\t2\t-\tweight\t-8.903068121134156e-05\n",
|
||||
"feature\t1\t-\tweight\t-0.003628410033754683\n",
|
||||
"feature\t4\t-\tweight\t-0.004042182279091933\n",
|
||||
"feature\t7\t-\tweight\t-0.004079610197989652\n",
|
||||
"feature\t0\t-\tweight\t-0.07078512499474116\n",
|
||||
"feature\t9\t-\tweight\t-0.07090128668558571\n",
|
||||
"feature\t6\t-\tweight\t-0.07284859530849022\n",
|
||||
"feature\t3\t-\tweight\t-0.07317257962730919\n",
|
||||
"Latent semantic no. 9\n",
|
||||
"feature\t5\t-\tweight\t8.414336905221735e-05\n",
|
||||
"feature\t8\t-\tweight\t5.6427744439484355e-05\n",
|
||||
"feature\t2\t-\tweight\t-0.00016083066069906443\n",
|
||||
"feature\t1\t-\tweight\t-0.0028491737945443647\n",
|
||||
"feature\t4\t-\tweight\t-0.003057268122115886\n",
|
||||
"feature\t7\t-\tweight\t-0.003069397622655647\n",
|
||||
"feature\t0\t-\tweight\t-0.06533602471133236\n",
|
||||
"feature\t3\t-\tweight\t-0.06579569084919401\n",
|
||||
"feature\t6\t-\tweight\t-0.06579792129352352\n",
|
||||
"feature\t9\t-\tweight\t-0.06583901427338712\n",
|
||||
"Showing label-weight latent semantic\n",
|
||||
"Latent semantic no. 0\n",
|
||||
"label\t3\t-\tweight\t1.0\n",
|
||||
"label\t0\t-\tweight\t0.0\n",
|
||||
"label\t1\t-\tweight\t0.0\n",
|
||||
"label\t2\t-\tweight\t0.0\n",
|
||||
"label\t4\t-\tweight\t0.0\n",
|
||||
"label\t5\t-\tweight\t0.0\n",
|
||||
"label\t6\t-\tweight\t0.0\n",
|
||||
"label\t7\t-\tweight\t0.0\n",
|
||||
"label\t8\t-\tweight\t0.0\n",
|
||||
"label\t9\t-\tweight\t0.0\n",
|
||||
"Latent semantic no. 1\n",
|
||||
"label\t5\t-\tweight\t0.9999999999999999\n",
|
||||
"label\t0\t-\tweight\t0.0\n",
|
||||
"label\t1\t-\tweight\t0.0\n",
|
||||
"label\t2\t-\tweight\t0.0\n",
|
||||
"label\t3\t-\tweight\t0.0\n",
|
||||
"label\t4\t-\tweight\t0.0\n",
|
||||
"label\t6\t-\tweight\t0.0\n",
|
||||
"label\t7\t-\tweight\t0.0\n",
|
||||
"label\t8\t-\tweight\t0.0\n",
|
||||
"label\t9\t-\tweight\t0.0\n",
|
||||
"Latent semantic no. 2\n",
|
||||
"label\t1\t-\tweight\t0.9999999999999998\n",
|
||||
"label\t0\t-\tweight\t0.0\n",
|
||||
"label\t2\t-\tweight\t0.0\n",
|
||||
"label\t3\t-\tweight\t0.0\n",
|
||||
"label\t4\t-\tweight\t0.0\n",
|
||||
"label\t5\t-\tweight\t0.0\n",
|
||||
"label\t6\t-\tweight\t0.0\n",
|
||||
"label\t7\t-\tweight\t0.0\n",
|
||||
"label\t8\t-\tweight\t0.0\n",
|
||||
"label\t9\t-\tweight\t0.0\n",
|
||||
"Latent semantic no. 3\n",
|
||||
"label\t0\t-\tweight\t0.9999999999999994\n",
|
||||
"label\t1\t-\tweight\t0.0\n",
|
||||
"label\t2\t-\tweight\t0.0\n",
|
||||
"label\t3\t-\tweight\t0.0\n",
|
||||
"label\t4\t-\tweight\t0.0\n",
|
||||
"label\t5\t-\tweight\t0.0\n",
|
||||
"label\t6\t-\tweight\t0.0\n",
|
||||
"label\t7\t-\tweight\t0.0\n",
|
||||
"label\t8\t-\tweight\t0.0\n",
|
||||
"label\t9\t-\tweight\t0.0\n",
|
||||
"Latent semantic no. 4\n",
|
||||
"label\t94\t-\tweight\t1.0000000000000007\n",
|
||||
"label\t0\t-\tweight\t0.0\n",
|
||||
"label\t1\t-\tweight\t0.0\n",
|
||||
"label\t2\t-\tweight\t0.0\n",
|
||||
"label\t3\t-\tweight\t0.0\n",
|
||||
"label\t4\t-\tweight\t0.0\n",
|
||||
"label\t5\t-\tweight\t0.0\n",
|
||||
"label\t6\t-\tweight\t0.0\n",
|
||||
"label\t7\t-\tweight\t0.0\n",
|
||||
"label\t8\t-\tweight\t0.0\n",
|
||||
"Latent semantic no. 5\n",
|
||||
"label\t55\t-\tweight\t1.0\n",
|
||||
"label\t0\t-\tweight\t0.0\n",
|
||||
"label\t1\t-\tweight\t0.0\n",
|
||||
"label\t2\t-\tweight\t0.0\n",
|
||||
"label\t3\t-\tweight\t0.0\n",
|
||||
"label\t4\t-\tweight\t0.0\n",
|
||||
"label\t5\t-\tweight\t0.0\n",
|
||||
"label\t6\t-\tweight\t0.0\n",
|
||||
"label\t7\t-\tweight\t0.0\n",
|
||||
"label\t8\t-\tweight\t0.0\n",
|
||||
"Latent semantic no. 6\n",
|
||||
"label\t12\t-\tweight\t0.9999999999999998\n",
|
||||
"label\t0\t-\tweight\t0.0\n",
|
||||
"label\t1\t-\tweight\t0.0\n",
|
||||
"label\t2\t-\tweight\t0.0\n",
|
||||
"label\t3\t-\tweight\t0.0\n",
|
||||
"label\t4\t-\tweight\t0.0\n",
|
||||
"label\t5\t-\tweight\t0.0\n",
|
||||
"label\t6\t-\tweight\t0.0\n",
|
||||
"label\t7\t-\tweight\t0.0\n",
|
||||
"label\t8\t-\tweight\t0.0\n",
|
||||
"Latent semantic no. 7\n",
|
||||
"label\t63\t-\tweight\t0.9999999999999997\n",
|
||||
"label\t0\t-\tweight\t0.0\n",
|
||||
"label\t1\t-\tweight\t0.0\n",
|
||||
"label\t2\t-\tweight\t0.0\n",
|
||||
"label\t3\t-\tweight\t0.0\n",
|
||||
"label\t4\t-\tweight\t0.0\n",
|
||||
"label\t5\t-\tweight\t0.0\n",
|
||||
"label\t6\t-\tweight\t0.0\n",
|
||||
"label\t7\t-\tweight\t0.0\n",
|
||||
"label\t8\t-\tweight\t0.0\n",
|
||||
"Latent semantic no. 8\n",
|
||||
"label\t46\t-\tweight\t1.0\n",
|
||||
"label\t0\t-\tweight\t0.0\n",
|
||||
"label\t1\t-\tweight\t0.0\n",
|
||||
"label\t2\t-\tweight\t0.0\n",
|
||||
"label\t3\t-\tweight\t0.0\n",
|
||||
"label\t4\t-\tweight\t0.0\n",
|
||||
"label\t5\t-\tweight\t0.0\n",
|
||||
"label\t6\t-\tweight\t0.0\n",
|
||||
"label\t7\t-\tweight\t0.0\n",
|
||||
"label\t8\t-\tweight\t0.0\n",
|
||||
"Latent semantic no. 9\n",
|
||||
"label\t93\t-\tweight\t1.0000000000000002\n",
|
||||
"label\t0\t-\tweight\t0.0\n",
|
||||
"label\t1\t-\tweight\t0.0\n",
|
||||
"label\t2\t-\tweight\t0.0\n",
|
||||
"label\t3\t-\tweight\t0.0\n",
|
||||
"label\t4\t-\tweight\t0.0\n",
|
||||
"label\t5\t-\tweight\t0.0\n",
|
||||
"label\t6\t-\tweight\t0.0\n",
|
||||
"label\t7\t-\tweight\t0.0\n",
|
||||
"label\t8\t-\tweight\t0.0\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"selected_feature_model = valid_feature_models[\n",
|
||||
" str(input(\"Enter feature model - one of \" + str(list(valid_feature_models.keys()))))\n",
|
||||
@ -59,7 +401,7 @@
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.10.5"
|
||||
"version": "3.11.4"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
|
||||
@ -1,64 +0,0 @@
|
||||
import json
|
||||
import tensorly as tl
|
||||
import numpy as np
|
||||
from pymongo import MongoClient
|
||||
from phase1_mongodb import *
|
||||
|
||||
client = MongoClient()
|
||||
client = MongoClient(host="localhost", port=27017)
|
||||
|
||||
# Select the database
|
||||
db = client.Multimedia_Web_DBs
|
||||
|
||||
caltechDataset = loadDataset()
|
||||
num_labels = 101
|
||||
# Fetch all documents from the collection and then sort them by "_id"
|
||||
feature_descriptors = list(db.Feature_Descriptors.find({}))
|
||||
feature_descriptors = sorted(list(db.Feature_Descriptors.find({})), key=lambda x: x["_id"], reverse=False)
|
||||
label_ids = [x["label"] for x in feature_descriptors]
|
||||
|
||||
def compute_cp_decomposition(feature_model, rank):
|
||||
|
||||
label_vectors = [(x["label"], x[feature_model]) for x in feature_descriptors if x["_id"] % 2 == 0]
|
||||
|
||||
num_labels = 101
|
||||
tensor_shape = (len(label_vectors), len(feature_descriptors[0][feature_model]), num_labels)
|
||||
tensor = np.zeros(tensor_shape)
|
||||
for id in range(len(label_vectors)):
|
||||
label = label_vectors[id][0]
|
||||
tensor[id, :, label] = label_vectors[id][1]
|
||||
|
||||
weights, factors = tl.decomposition.parafac(tensor, rank=rank, normalize_factors=True)
|
||||
return weights, factors
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
|
||||
|
||||
# Step 4: Perform CP-decomposition (parafac) to extract latent semantics
|
||||
|
||||
features = ['color_moments', 'hog', 'layer3', 'avgpool', 'fc']
|
||||
|
||||
# User input for feature model to extract
|
||||
print("1: Color moments")
|
||||
print("2: HOG")
|
||||
print("3: Resnet50 Avgpool layer")
|
||||
print("4: Resnet50 Layer 3")
|
||||
print("5: Resnet50 FC layer")
|
||||
feature_model = features[int(input("Select the feature model: ")) - 1]
|
||||
k = int(input("Enter k: "))
|
||||
weights, factors = compute_cp_decomposition(feature_model, k)
|
||||
k_latent_semantics = list(zip(label_ids, factors[0].tolist()))
|
||||
k_latent_semantics_display = sorted(list(zip(label_ids, factors[0].tolist())), key = lambda x: x[1][0], reverse = True)
|
||||
k_latent_semantics_display = [{"_id": item[0], "semantics": item[1]} for item in k_latent_semantics_display]
|
||||
filename = f'{feature_model}-CP-semantics-{k}.json'
|
||||
k_latent_semantics = [{"_id": item[0], "semantics": item[1]} for item in k_latent_semantics]
|
||||
with open(filename, 'w', encoding='utf-8') as f:
|
||||
json.dump(k_latent_semantics, f, ensure_ascii = False)
|
||||
|
||||
print(k_latent_semantics_display)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@ -22,7 +22,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
@ -31,9 +31,19 @@
|
||||
"text": [
|
||||
"Applying kmeans on the given similarity matrix to get 10 latent semantics (showing only top 10 label-weight pairs for each latent semantic)...\n",
|
||||
"Initialized centroids\n",
|
||||
"Iteration 6 - Converged\n",
|
||||
"Note: for K-Means we display distances, in ascending order\n",
|
||||
"Latent semantic no. 0\n",
|
||||
"label\t38\t-\tDistance\t2.0070855260713345\n",
|
||||
"label\t71\t-\tDistance\t2.224974820168396\n",
|
||||
"label\t94\t-\tDistance\t2.341857909278956\n",
|
||||
"label\t45\t-\tDistance\t2.99059339026617\n",
|
||||
"label\t34\t-\tDistance\t3.2010802901998034\n",
|
||||
"label\t57\t-\tDistance\t3.248469772417219\n",
|
||||
"label\t77\t-\tDistance\t3.5731245496083677\n",
|
||||
"label\t84\t-\tDistance\t4.026791789923078\n",
|
||||
"label\t50\t-\tDistance\t4.144496651017247\n",
|
||||
"label\t74\t-\tDistance\t4.614517493407895\n",
|
||||
"Latent semantic no. 1\n",
|
||||
"label\t92\t-\tDistance\t3.230292112512146\n",
|
||||
"label\t4\t-\tDistance\t3.5335656340201087\n",
|
||||
"label\t2\t-\tDistance\t4.905027845590568\n",
|
||||
@ -44,105 +54,94 @@
|
||||
"label\t60\t-\tDistance\t10.659440914917885\n",
|
||||
"label\t82\t-\tDistance\t14.23961431596092\n",
|
||||
"label\t51\t-\tDistance\t14.308250416010853\n",
|
||||
"Latent semantic no. 1\n",
|
||||
"label\t47\t-\tDistance\t1.7917105751649582\n",
|
||||
"label\t42\t-\tDistance\t1.8293437639389183\n",
|
||||
"label\t35\t-\tDistance\t2.47989550940933\n",
|
||||
"label\t29\t-\tDistance\t2.4870731532031694\n",
|
||||
"label\t33\t-\tDistance\t3.0078415187323975\n",
|
||||
"label\t49\t-\tDistance\t3.1694527370940753\n",
|
||||
"label\t54\t-\tDistance\t3.1764161450515775\n",
|
||||
"label\t28\t-\tDistance\t3.520891544025031\n",
|
||||
"label\t19\t-\tDistance\t3.752147129401601\n",
|
||||
"label\t82\t-\tDistance\t3.9820650145644705\n",
|
||||
"Latent semantic no. 2\n",
|
||||
"label\t91\t-\tDistance\t2.7653145272024493\n",
|
||||
"label\t14\t-\tDistance\t3.829858168383929\n",
|
||||
"label\t93\t-\tDistance\t4.108580770102051\n",
|
||||
"label\t48\t-\tDistance\t4.25643528657963\n",
|
||||
"label\t85\t-\tDistance\t4.308356278561495\n",
|
||||
"label\t17\t-\tDistance\t4.72066235395654\n",
|
||||
"label\t52\t-\tDistance\t4.733719921198274\n",
|
||||
"label\t43\t-\tDistance\t5.593133775346241\n",
|
||||
"label\t75\t-\tDistance\t6.35213810417939\n",
|
||||
"label\t83\t-\tDistance\t6.365421291009637\n",
|
||||
"label\t98\t-\tDistance\t4.084187568594383\n",
|
||||
"label\t75\t-\tDistance\t4.208154727653996\n",
|
||||
"label\t59\t-\tDistance\t4.267012427049042\n",
|
||||
"label\t11\t-\tDistance\t4.3719751047928685\n",
|
||||
"label\t63\t-\tDistance\t4.389793026579887\n",
|
||||
"label\t64\t-\tDistance\t4.534510062334466\n",
|
||||
"label\t32\t-\tDistance\t4.596340579479344\n",
|
||||
"label\t79\t-\tDistance\t4.97413168034284\n",
|
||||
"label\t55\t-\tDistance\t5.180445076965457\n",
|
||||
"label\t84\t-\tDistance\t5.321702524477488\n",
|
||||
"Latent semantic no. 3\n",
|
||||
"label\t63\t-\tDistance\t3.0750924250527425\n",
|
||||
"label\t98\t-\tDistance\t3.256907164618595\n",
|
||||
"label\t59\t-\tDistance\t3.36740335111714\n",
|
||||
"label\t32\t-\tDistance\t3.4369727667587036\n",
|
||||
"label\t84\t-\tDistance\t4.042695694344645\n",
|
||||
"label\t79\t-\tDistance\t4.051227266452548\n",
|
||||
"label\t94\t-\tDistance\t4.535286748567164\n",
|
||||
"label\t75\t-\tDistance\t4.567193344282598\n",
|
||||
"label\t11\t-\tDistance\t4.856460310962189\n",
|
||||
"label\t55\t-\tDistance\t5.036016117772108\n",
|
||||
"label\t73\t-\tDistance\t2.2337776135986673\n",
|
||||
"label\t77\t-\tDistance\t2.446394227315699\n",
|
||||
"label\t22\t-\tDistance\t2.8266085928002305\n",
|
||||
"label\t96\t-\tDistance\t2.951528289863372\n",
|
||||
"label\t72\t-\tDistance\t3.0039788225292554\n",
|
||||
"label\t45\t-\tDistance\t3.109522101340006\n",
|
||||
"label\t74\t-\tDistance\t3.519269143632249\n",
|
||||
"label\t57\t-\tDistance\t3.589490130921498\n",
|
||||
"label\t50\t-\tDistance\t3.6391055564874\n",
|
||||
"label\t18\t-\tDistance\t4.109290572000071\n",
|
||||
"Latent semantic no. 4\n",
|
||||
"label\t80\t-\tDistance\t4.403201299886196\n",
|
||||
"label\t99\t-\tDistance\t4.731021526243766\n",
|
||||
"label\t3\t-\tDistance\t4.807090489912411\n",
|
||||
"label\t48\t-\tDistance\t8.911953449338059\n",
|
||||
"label\t85\t-\tDistance\t9.334554754293974\n",
|
||||
"label\t52\t-\tDistance\t11.390353342613288\n",
|
||||
"label\t43\t-\tDistance\t12.033766054009595\n",
|
||||
"label\t91\t-\tDistance\t12.446673116679838\n",
|
||||
"label\t14\t-\tDistance\t12.717196488491759\n",
|
||||
"label\t83\t-\tDistance\t13.5754060440636\n",
|
||||
"label\t78\t-\tDistance\t1.8064076815500691\n",
|
||||
"label\t6\t-\tDistance\t1.960264623688121\n",
|
||||
"label\t7\t-\tDistance\t2.1426433652644246\n",
|
||||
"label\t61\t-\tDistance\t2.211884975823563\n",
|
||||
"label\t67\t-\tDistance\t2.2819452598845484\n",
|
||||
"label\t20\t-\tDistance\t2.3104854768313308\n",
|
||||
"label\t62\t-\tDistance\t2.4074452247279643\n",
|
||||
"label\t23\t-\tDistance\t2.4123612373578465\n",
|
||||
"label\t27\t-\tDistance\t2.5964084026274183\n",
|
||||
"label\t26\t-\tDistance\t2.6484422926018762\n",
|
||||
"Latent semantic no. 5\n",
|
||||
"label\t77\t-\tDistance\t2.144778050426236\n",
|
||||
"label\t45\t-\tDistance\t2.3391902699042175\n",
|
||||
"label\t73\t-\tDistance\t2.5586280095180554\n",
|
||||
"label\t22\t-\tDistance\t2.833603911721891\n",
|
||||
"label\t57\t-\tDistance\t2.9256965790964955\n",
|
||||
"label\t50\t-\tDistance\t3.216841848641699\n",
|
||||
"label\t74\t-\tDistance\t3.2964675276683377\n",
|
||||
"label\t38\t-\tDistance\t3.3501016749777297\n",
|
||||
"label\t72\t-\tDistance\t3.461208008080578\n",
|
||||
"label\t34\t-\tDistance\t3.8970766980234073\n",
|
||||
"label\t1\t-\tDistance\t0.0\n",
|
||||
"label\t66\t-\tDistance\t6.283884339485376\n",
|
||||
"label\t0\t-\tDistance\t7.134186839941345\n",
|
||||
"label\t68\t-\tDistance\t7.6014631552864165\n",
|
||||
"label\t42\t-\tDistance\t7.699614640935743\n",
|
||||
"label\t90\t-\tDistance\t7.745628525155249\n",
|
||||
"label\t35\t-\tDistance\t7.888542444783939\n",
|
||||
"label\t89\t-\tDistance\t8.296957431371565\n",
|
||||
"label\t19\t-\tDistance\t8.389232149750157\n",
|
||||
"label\t70\t-\tDistance\t8.416181651996403\n",
|
||||
"Latent semantic no. 6\n",
|
||||
"label\t78\t-\tDistance\t1.772794735295686\n",
|
||||
"label\t6\t-\tDistance\t1.9243189269571448\n",
|
||||
"label\t67\t-\tDistance\t2.0159218514234905\n",
|
||||
"label\t23\t-\tDistance\t2.0402136200750687\n",
|
||||
"label\t7\t-\tDistance\t2.1597363741525943\n",
|
||||
"label\t15\t-\tDistance\t2.2890961861911463\n",
|
||||
"label\t86\t-\tDistance\t2.418355035843437\n",
|
||||
"label\t39\t-\tDistance\t2.431493894783776\n",
|
||||
"label\t20\t-\tDistance\t2.4339361855736694\n",
|
||||
"label\t61\t-\tDistance\t2.4663666328704577\n",
|
||||
"label\t58\t-\tDistance\t1.4491641647189777\n",
|
||||
"label\t37\t-\tDistance\t1.5439214839372046\n",
|
||||
"label\t24\t-\tDistance\t1.5452615348627594\n",
|
||||
"label\t8\t-\tDistance\t1.7715264047899464\n",
|
||||
"label\t25\t-\tDistance\t1.86516161648985\n",
|
||||
"label\t87\t-\tDistance\t2.077478215700691\n",
|
||||
"label\t15\t-\tDistance\t2.225120843217057\n",
|
||||
"label\t16\t-\tDistance\t2.267782774837321\n",
|
||||
"label\t39\t-\tDistance\t2.395932754700218\n",
|
||||
"label\t36\t-\tDistance\t2.6959359474526083\n",
|
||||
"Latent semantic no. 7\n",
|
||||
"label\t36\t-\tDistance\t2.148560462001178\n",
|
||||
"label\t10\t-\tDistance\t2.336732460490279\n",
|
||||
"label\t76\t-\tDistance\t2.410558517560451\n",
|
||||
"label\t9\t-\tDistance\t2.4853810228702433\n",
|
||||
"label\t44\t-\tDistance\t2.822322732248757\n",
|
||||
"label\t16\t-\tDistance\t2.8525379488476954\n",
|
||||
"label\t19\t-\tDistance\t2.887333058828606\n",
|
||||
"label\t41\t-\tDistance\t3.2609266747980072\n",
|
||||
"label\t0\t-\tDistance\t3.4462772872176073\n",
|
||||
"label\t8\t-\tDistance\t3.4492972662700305\n",
|
||||
"label\t44\t-\tDistance\t2.2303295853566074\n",
|
||||
"label\t19\t-\tDistance\t2.233360628309259\n",
|
||||
"label\t76\t-\tDistance\t2.2873290684053234\n",
|
||||
"label\t49\t-\tDistance\t2.4188703660528543\n",
|
||||
"label\t9\t-\tDistance\t2.4470406114525685\n",
|
||||
"label\t54\t-\tDistance\t2.4930648472372385\n",
|
||||
"label\t10\t-\tDistance\t2.5342743763741615\n",
|
||||
"label\t33\t-\tDistance\t2.6761306270075935\n",
|
||||
"label\t28\t-\tDistance\t2.76245021657484\n",
|
||||
"label\t36\t-\tDistance\t2.8111765962163813\n",
|
||||
"Latent semantic no. 8\n",
|
||||
"label\t60\t-\tDistance\t3.2878466679861047\n",
|
||||
"label\t66\t-\tDistance\t3.8429959542446595\n",
|
||||
"label\t95\t-\tDistance\t4.407501055402251\n",
|
||||
"label\t51\t-\tDistance\t4.675169110980285\n",
|
||||
"label\t82\t-\tDistance\t4.930711123344968\n",
|
||||
"label\t1\t-\tDistance\t5.746326956457264\n",
|
||||
"label\t42\t-\tDistance\t5.932080034810729\n",
|
||||
"label\t29\t-\tDistance\t5.934164464898548\n",
|
||||
"label\t47\t-\tDistance\t6.3479330191887025\n",
|
||||
"label\t35\t-\tDistance\t6.422013021100036\n",
|
||||
"label\t48\t-\tDistance\t3.1737547288361596\n",
|
||||
"label\t85\t-\tDistance\t4.021946100259249\n",
|
||||
"label\t91\t-\tDistance\t5.424003509894085\n",
|
||||
"label\t52\t-\tDistance\t5.537608967567619\n",
|
||||
"label\t43\t-\tDistance\t5.53813149000202\n",
|
||||
"label\t80\t-\tDistance\t5.6425678719484225\n",
|
||||
"label\t14\t-\tDistance\t5.87213105210823\n",
|
||||
"label\t83\t-\tDistance\t7.001763109529681\n",
|
||||
"label\t93\t-\tDistance\t7.563499549838895\n",
|
||||
"label\t3\t-\tDistance\t8.036164382755217\n",
|
||||
"Latent semantic no. 9\n",
|
||||
"label\t83\t-\tDistance\t5.036696108166727\n",
|
||||
"label\t100\t-\tDistance\t5.163440732380748\n",
|
||||
"label\t43\t-\tDistance\t5.447889420797845\n",
|
||||
"label\t88\t-\tDistance\t6.470159759945887\n",
|
||||
"label\t64\t-\tDistance\t6.8077571085247355\n",
|
||||
"label\t17\t-\tDistance\t7.350448996699054\n",
|
||||
"label\t55\t-\tDistance\t7.555979165305925\n",
|
||||
"label\t11\t-\tDistance\t7.84770773092541\n",
|
||||
"label\t91\t-\tDistance\t7.869761874577601\n",
|
||||
"label\t75\t-\tDistance\t7.997112142085329\n"
|
||||
"label\t51\t-\tDistance\t1.871618718249688\n",
|
||||
"label\t82\t-\tDistance\t2.0311106628896\n",
|
||||
"label\t29\t-\tDistance\t2.6509535626831533\n",
|
||||
"label\t42\t-\tDistance\t3.083958153652753\n",
|
||||
"label\t47\t-\tDistance\t3.198020753679005\n",
|
||||
"label\t66\t-\tDistance\t3.5690360028582857\n",
|
||||
"label\t35\t-\tDistance\t4.033659067172662\n",
|
||||
"label\t60\t-\tDistance\t4.979629225985197\n",
|
||||
"label\t33\t-\tDistance\t6.016698032150541\n",
|
||||
"label\t95\t-\tDistance\t6.119613727077633\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@ -171,7 +170,7 @@
|
||||
" k,\n",
|
||||
" selected_dim_reduction_method,\n",
|
||||
" top_images=10,\n",
|
||||
")\n"
|
||||
")"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -198,7 +197,7 @@
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.10.5"
|
||||
"version": "3.11.4"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
@ -13,7 +13,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
@ -22,9 +22,130 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Applying kmeans on the given similarity matrix to get 10 latent semantics (showing only top 10 image-weight pairs for each latent semantic)...\n",
|
||||
"Initialized centroids\n",
|
||||
"Iteration 78 - Converged\n",
|
||||
"Note: for K-Means we display distances, in ascending order\n",
|
||||
"Latent semantic no. 0\n",
|
||||
"image\t2035\t-\tDistance\t15.193245192997269\n",
|
||||
"image\t3813\t-\tDistance\t16.04888912166159\n",
|
||||
"image\t3846\t-\tDistance\t16.9147608871532\n",
|
||||
"image\t2925\t-\tDistance\t17.10454309878603\n",
|
||||
"image\t3455\t-\tDistance\t18.102307562986407\n",
|
||||
"image\t2410\t-\tDistance\t18.94942620886487\n",
|
||||
"image\t2107\t-\tDistance\t19.47309707424604\n",
|
||||
"image\t169\t-\tDistance\t19.533352544481723\n",
|
||||
"image\t2584\t-\tDistance\t20.078954258235058\n",
|
||||
"image\t2554\t-\tDistance\t20.31870945722174\n",
|
||||
"Latent semantic no. 1\n",
|
||||
"image\t4287\t-\tDistance\t19.736469352294893\n",
|
||||
"image\t1903\t-\tDistance\t20.625366718297947\n",
|
||||
"image\t4283\t-\tDistance\t21.293764261460364\n",
|
||||
"image\t2020\t-\tDistance\t21.439372707924147\n",
|
||||
"image\t2216\t-\tDistance\t21.50575404583331\n",
|
||||
"image\t4272\t-\tDistance\t22.731747308700246\n",
|
||||
"image\t73\t-\tDistance\t22.984525532773183\n",
|
||||
"image\t3118\t-\tDistance\t23.05742728400208\n",
|
||||
"image\t622\t-\tDistance\t23.38211853588565\n",
|
||||
"image\t4257\t-\tDistance\t23.952073196825147\n",
|
||||
"Latent semantic no. 2\n",
|
||||
"image\t1607\t-\tDistance\t19.475143670438978\n",
|
||||
"image\t1946\t-\tDistance\t21.51656357453921\n",
|
||||
"image\t2356\t-\tDistance\t21.828572283680128\n",
|
||||
"image\t3908\t-\tDistance\t22.05022203753488\n",
|
||||
"image\t3547\t-\tDistance\t22.443143797259534\n",
|
||||
"image\t2199\t-\tDistance\t22.571833277582463\n",
|
||||
"image\t3519\t-\tDistance\t22.86028550513413\n",
|
||||
"image\t1890\t-\tDistance\t23.30071966551519\n",
|
||||
"image\t173\t-\tDistance\t23.303977110625112\n",
|
||||
"image\t4270\t-\tDistance\t23.49369113941158\n",
|
||||
"Latent semantic no. 3\n",
|
||||
"image\t3877\t-\tDistance\t26.69192882188752\n",
|
||||
"image\t3763\t-\tDistance\t30.515760593946236\n",
|
||||
"image\t3788\t-\tDistance\t32.71038293371164\n",
|
||||
"image\t2735\t-\tDistance\t33.09699801502328\n",
|
||||
"image\t1506\t-\tDistance\t36.057724149884244\n",
|
||||
"image\t1686\t-\tDistance\t36.473691930187435\n",
|
||||
"image\t3485\t-\tDistance\t36.49488863581563\n",
|
||||
"image\t3920\t-\tDistance\t36.56582383384961\n",
|
||||
"image\t3403\t-\tDistance\t37.44068139304385\n",
|
||||
"image\t3762\t-\tDistance\t37.70577701904375\n",
|
||||
"Latent semantic no. 4\n",
|
||||
"image\t1783\t-\tDistance\t16.117313734508425\n",
|
||||
"image\t1395\t-\tDistance\t16.95429167145128\n",
|
||||
"image\t1784\t-\tDistance\t17.57009310160933\n",
|
||||
"image\t1789\t-\tDistance\t17.973453810738004\n",
|
||||
"image\t1765\t-\tDistance\t18.610362195798043\n",
|
||||
"image\t1773\t-\tDistance\t19.041096692299885\n",
|
||||
"image\t2926\t-\tDistance\t19.11502996606766\n",
|
||||
"image\t1685\t-\tDistance\t19.414760349222448\n",
|
||||
"image\t2841\t-\tDistance\t19.81113964538446\n",
|
||||
"image\t1460\t-\tDistance\t19.898834382884864\n",
|
||||
"Latent semantic no. 5\n",
|
||||
"image\t3303\t-\tDistance\t20.969885324908756\n",
|
||||
"image\t2045\t-\tDistance\t21.631692888420304\n",
|
||||
"image\t3825\t-\tDistance\t21.716033288921732\n",
|
||||
"image\t3929\t-\tDistance\t22.774521397811917\n",
|
||||
"image\t1859\t-\tDistance\t23.372667860565386\n",
|
||||
"image\t3232\t-\tDistance\t26.60481926894494\n",
|
||||
"image\t3149\t-\tDistance\t26.715214213345696\n",
|
||||
"image\t1502\t-\tDistance\t27.72700742629819\n",
|
||||
"image\t1579\t-\tDistance\t28.000908326829553\n",
|
||||
"image\t3021\t-\tDistance\t28.227049715323034\n",
|
||||
"Latent semantic no. 6\n",
|
||||
"image\t1576\t-\tDistance\t18.87169047631405\n",
|
||||
"image\t2858\t-\tDistance\t20.03847155817962\n",
|
||||
"image\t1586\t-\tDistance\t20.080662203948876\n",
|
||||
"image\t2850\t-\tDistance\t20.838413387796493\n",
|
||||
"image\t2028\t-\tDistance\t21.169189788615924\n",
|
||||
"image\t2716\t-\tDistance\t21.48136423054197\n",
|
||||
"image\t4102\t-\tDistance\t21.660099255138686\n",
|
||||
"image\t3457\t-\tDistance\t21.769184940550623\n",
|
||||
"image\t1736\t-\tDistance\t21.85959261306364\n",
|
||||
"image\t4314\t-\tDistance\t22.54861914619658\n",
|
||||
"Latent semantic no. 7\n",
|
||||
"image\t3950\t-\tDistance\t25.18109439269185\n",
|
||||
"image\t2023\t-\tDistance\t25.789279523766343\n",
|
||||
"image\t3932\t-\tDistance\t27.90805288360532\n",
|
||||
"image\t1434\t-\tDistance\t28.944408149134258\n",
|
||||
"image\t2330\t-\tDistance\t29.442864276116474\n",
|
||||
"image\t2349\t-\tDistance\t30.24950272216615\n",
|
||||
"image\t3252\t-\tDistance\t30.39413795688458\n",
|
||||
"image\t3526\t-\tDistance\t30.998757072825036\n",
|
||||
"image\t1504\t-\tDistance\t31.665045303749636\n",
|
||||
"image\t3117\t-\tDistance\t32.420320427638046\n",
|
||||
"Latent semantic no. 8\n",
|
||||
"image\t2077\t-\tDistance\t13.954066038827099\n",
|
||||
"image\t3402\t-\tDistance\t14.458733182318412\n",
|
||||
"image\t1563\t-\tDistance\t16.656651855034323\n",
|
||||
"image\t1846\t-\tDistance\t17.052974589353724\n",
|
||||
"image\t730\t-\tDistance\t17.25680776558567\n",
|
||||
"image\t3503\t-\tDistance\t17.367570425682572\n",
|
||||
"image\t3405\t-\tDistance\t18.378448265500502\n",
|
||||
"image\t4284\t-\tDistance\t19.017406411077424\n",
|
||||
"image\t3809\t-\tDistance\t19.162266095814548\n",
|
||||
"image\t2510\t-\tDistance\t19.361042141304708\n",
|
||||
"Latent semantic no. 9\n",
|
||||
"image\t3393\t-\tDistance\t18.57180005298004\n",
|
||||
"image\t2544\t-\tDistance\t20.113218222781388\n",
|
||||
"image\t1930\t-\tDistance\t20.383444354935005\n",
|
||||
"image\t1682\t-\tDistance\t21.019603660594967\n",
|
||||
"image\t3155\t-\tDistance\t21.019680109622932\n",
|
||||
"image\t4000\t-\tDistance\t21.85089581447219\n",
|
||||
"image\t2815\t-\tDistance\t21.85923223224687\n",
|
||||
"image\t2524\t-\tDistance\t22.415510254934645\n",
|
||||
"image\t2907\t-\tDistance\t22.896560385522896\n",
|
||||
"image\t2434\t-\tDistance\t22.9031446197451\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"selected_feature_model = valid_feature_models[\n",
|
||||
" str(input(\"Enter feature model - one of \" + str(list(valid_feature_models.keys()))))\n",
|
||||
@ -70,7 +191,7 @@
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.10.5"
|
||||
"version": "3.11.4"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
|
||||
305
Phase 2/task_7.ipynb
Normal file
305
Phase 2/task_7.ipynb
Normal file
@ -0,0 +1,305 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 49,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"The autoreload extension is already loaded. To reload it, use:\n",
|
||||
" %reload_ext autoreload\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"%load_ext autoreload\n",
|
||||
"%autoreload 2"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 50,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import json\n",
|
||||
"import os\n",
|
||||
"import numpy as np\n",
|
||||
"from utils import *\n",
|
||||
"import math\n",
|
||||
"import heapq\n",
|
||||
"import random"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 51,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"fd_collection = getCollection(\"team_5_mwdb_phase_2\", \"fd_collection\")\n",
|
||||
"all_images = fd_collection.find()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 52,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"image_sim-cm_fd-kmeans-10-semantics.json loaded\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"selected_latent_space = valid_latent_spaces[\n",
|
||||
" str(input(\"Enter latent space - one of \" + str(list(valid_latent_spaces.keys()))))\n",
|
||||
"]\n",
|
||||
"\n",
|
||||
"selected_feature_model = valid_feature_models[\n",
|
||||
" str(input(\"Enter feature model - one of \" + str(list(valid_feature_models.keys()))))\n",
|
||||
"]\n",
|
||||
"\n",
|
||||
"k = int(input(\"Enter value of k: \"))\n",
|
||||
"if k < 1:\n",
|
||||
" raise ValueError(\"k should be a positive integer\")\n",
|
||||
"\n",
|
||||
"selected_dim_reduction_method = str(\n",
|
||||
" input(\n",
|
||||
" \"Enter dimensionality reduction method - one of \"\n",
|
||||
" + str(list(valid_dim_reduction_methods.keys()))\n",
|
||||
" )\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"image_id = int(input(\"Enter image ID: \"))\n",
|
||||
"if image_id < 0 and image_id > 8676 and image_id % 2 != 0:\n",
|
||||
" raise ValueError(\"image id should be even number between 0 and 8676\")\n",
|
||||
"\n",
|
||||
"knum = int(input(\"Enter value of knum: \"))\n",
|
||||
"if knum < 1:\n",
|
||||
" raise ValueError(\"knum should be a positive integer\")\n",
|
||||
"\n",
|
||||
"match selected_latent_space:\n",
|
||||
" case \"\":\n",
|
||||
" if os.path.exists(f\"{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json\"):\n",
|
||||
" data = json.load(open(f\"{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json\"))\n",
|
||||
" print(f\"{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json loaded\")\n",
|
||||
" else:\n",
|
||||
" print(f\"{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json does not exist\")\n",
|
||||
" case \"cp\":\n",
|
||||
" if os.path.exists(f\"{selected_feature_model}-cp-{k}-semantics.json\"):\n",
|
||||
" data = json.load(open(f\"{selected_feature_model}-cp-{k}-semantics.json\"))\n",
|
||||
" print(f\"{selected_feature_model}-cp-{k}-semantics.json loaded\")\n",
|
||||
" else: \n",
|
||||
" print(f\"{selected_feature_model}-cp-{k}-semantics.json does not exist\")\n",
|
||||
" case _:\n",
|
||||
" if os.path.exists(f\"{selected_latent_space}-{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json\"):\n",
|
||||
" data = json.load(open(f\"{selected_latent_space}-{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json\"))\n",
|
||||
" print(f\"{selected_latent_space}-{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json loaded\")\n",
|
||||
" else:\n",
|
||||
" print(f\"{selected_latent_space}-{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json does not exist\")\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 53,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def extract_similarities_ls1_ls4(latent_space, dim_reduction, selected_feature_model, data, image_id):\n",
|
||||
"\n",
|
||||
" image_fd = np.array(all_images[int(image_id / 2)][selected_feature_model]).flatten()\n",
|
||||
"\n",
|
||||
" match dim_reduction:\n",
|
||||
"\n",
|
||||
" case 'svd':\n",
|
||||
" U = np.array(data[\"image-semantic\"])\n",
|
||||
" S = np.array(data[\"semantics-core\"])\n",
|
||||
" if len(S.shape) == 1:\n",
|
||||
" S = np.diag(S)\n",
|
||||
" V = np.transpose(np.array(data[\"semantic-feature\"]))\n",
|
||||
" \n",
|
||||
" comparison_feature_space = np.matmul(U, S)\n",
|
||||
"\n",
|
||||
" if latent_space == \"image_sim\":\n",
|
||||
" comparison_vector = comparison_feature_space[int(image_id / 2)]\n",
|
||||
" else:\n",
|
||||
" comparison_vector = np.matmul(np.matmul(image_fd, V), S)\n",
|
||||
" \n",
|
||||
" case \"nmf\":\n",
|
||||
" H = np.array(data['semantic-feature'])\n",
|
||||
" comparison_feature_space = np.array(data['image-semantic'])\n",
|
||||
"\n",
|
||||
" if latent_space == \"image_sim\":\n",
|
||||
" comparison_vector = comparison_feature_space[int(image_id / 2)]\n",
|
||||
" else:\n",
|
||||
" comparison_vector = np.matmul(image_fd, np.transpose(H))\n",
|
||||
"\n",
|
||||
" case \"kmeans\":\n",
|
||||
" comparison_vector = []\n",
|
||||
" comparison_feature_space = np.array(data[\"image-semantic\"])\n",
|
||||
" S = np.array(data[\"semantic-feature\"])\n",
|
||||
"\n",
|
||||
" for centroid in S:\n",
|
||||
" if latent_space == \"image_sim\":\n",
|
||||
" sim_matrix = np.array(data[\"sim-matrix\"])\n",
|
||||
" comparison_vector.append(math.dist(sim_matrix[int(image_id / 2)], centroid))\n",
|
||||
" else:\n",
|
||||
" comparison_vector.append(math.dist(image_fd, centroid))\n",
|
||||
"\n",
|
||||
" n = len(comparison_feature_space)\n",
|
||||
"\n",
|
||||
" distances = []\n",
|
||||
" for i in range(n):\n",
|
||||
" if (i * 2) != image_id:\n",
|
||||
" distances.append({\"image_id\": i, \"label\": all_images[i][\"true_label\"], \"distance\": math.dist(comparison_vector, comparison_feature_space[i])})\n",
|
||||
"\n",
|
||||
" distances = sorted(distances, key=lambda x: x[\"distance\"], reverse=False)[:knum]\n",
|
||||
"\n",
|
||||
" for x in distances:\n",
|
||||
" print(x)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 54,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def extract_similarities_ls2(data, image_id):\n",
|
||||
"\n",
|
||||
" IS = np.array(data[\"image-semantic\"])\n",
|
||||
" S = np.array(data[\"semantics-core\"])\n",
|
||||
"\n",
|
||||
" if len(S.shape) == 1:\n",
|
||||
" S = np.diag(S)\n",
|
||||
"\n",
|
||||
" comparison_feature_space = np.matmul(IS, S)\n",
|
||||
" comparison_vector = comparison_feature_space[int(image_id / 2)]\n",
|
||||
"\n",
|
||||
" distances = []\n",
|
||||
"\n",
|
||||
" n = len(comparison_feature_space)\n",
|
||||
" for i in range(n):\n",
|
||||
" if i != (image_id / 2):\n",
|
||||
" distances.append({\"image_id\": i * 2, \"distance\": math.dist(comparison_vector, comparison_feature_space[i])})\n",
|
||||
" \n",
|
||||
" distances = sorted(distances, key=lambda x: x[\"distance\"], reverse=False)[:knum]\n",
|
||||
"\n",
|
||||
" for x in distances:\n",
|
||||
" print(x)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 55,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def extract_similarities_ls3(dim_reduction, data, image_id):\n",
|
||||
"\n",
|
||||
" img_label = all_images[int(image_id / 2)][\"true_label\"]\n",
|
||||
"\n",
|
||||
" match dim_reduction:\n",
|
||||
"\n",
|
||||
" case 'svd':\n",
|
||||
" U = np.array(data[\"image-semantic\"])\n",
|
||||
" S = np.array(data[\"semantics-core\"])\n",
|
||||
" V = np.transpose(np.array(data[\"semantic-feature\"]))\n",
|
||||
"\n",
|
||||
" comparison_feature_space = np.matmul(U, S)\n",
|
||||
" comparison_vector = comparison_feature_space[img_label]\n",
|
||||
" \n",
|
||||
" case \"nmf\":\n",
|
||||
" comparison_feature_space = np.array(data['image-semantic'])\n",
|
||||
" comparison_vector = comparison_feature_space[img_label]\n",
|
||||
"\n",
|
||||
" case \"kmeans\":\n",
|
||||
" comparison_feature_space = np.array(data[\"image-semantic\"])\n",
|
||||
" comparison_vector = comparison_feature_space[img_label]\n",
|
||||
"\n",
|
||||
" n = len(comparison_feature_space)\n",
|
||||
" distance = float('inf')\n",
|
||||
" most_similar_label = img_label\n",
|
||||
" for i in range(n):\n",
|
||||
" if i != img_label:\n",
|
||||
" temp_distance = math.dist(comparison_vector, comparison_feature_space[i])\n",
|
||||
" if distance > temp_distance:\n",
|
||||
" distance = temp_distance\n",
|
||||
" most_similar_label = i\n",
|
||||
"\n",
|
||||
" label_images = [x[\"image_id\"] for x in all_images if x[\"true_label\"] == most_similar_label]\n",
|
||||
" similar_images = random.sample(label_images, knum)\n",
|
||||
"\n",
|
||||
" print(f\"Most similar label to {img_label} is {most_similar_label}\")\n",
|
||||
" for img in similar_images:\n",
|
||||
" print(img)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 56,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"{'image_id': 2457, 'label': 39, 'distance': 5.400083378408386}\n",
|
||||
"{'image_id': 2629, 'label': 46, 'distance': 6.360136822031199}\n",
|
||||
"{'image_id': 1916, 'label': 23, 'distance': 8.279651870400942}\n",
|
||||
"{'image_id': 1975, 'label': 24, 'distance': 9.305370097143731}\n",
|
||||
"{'image_id': 3287, 'label': 65, 'distance': 9.696792665660324}\n",
|
||||
"{'image_id': 292, 'label': 1, 'distance': 10.198675122162054}\n",
|
||||
"{'image_id': 3965, 'label': 90, 'distance': 11.544874878013612}\n",
|
||||
"{'image_id': 4018, 'label': 92, 'distance': 12.064116415014514}\n",
|
||||
"{'image_id': 4037, 'label': 92, 'distance': 13.383239007317492}\n",
|
||||
"{'image_id': 4307, 'label': 99, 'distance': 14.448284626506538}\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"match selected_latent_space:\n",
|
||||
"\n",
|
||||
" case \"\" | \"image_sim\":\n",
|
||||
" \n",
|
||||
" extract_similarities_ls1_ls4(selected_latent_space, selected_dim_reduction_method, selected_feature_model, data, image_id)\n",
|
||||
"\n",
|
||||
" case \"label_sim\":\n",
|
||||
"\n",
|
||||
" extract_similarities_ls3(selected_dim_reduction_method, data, image_id)\n",
|
||||
"\n",
|
||||
" case \"cp\":\n",
|
||||
"\n",
|
||||
" extract_similarities_ls2(data, image_id)\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.11.4"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
342
Phase 2/task_8.ipynb
Normal file
342
Phase 2/task_8.ipynb
Normal file
@ -0,0 +1,342 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 140,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"The autoreload extension is already loaded. To reload it, use:\n",
|
||||
" %reload_ext autoreload\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"%load_ext autoreload\n",
|
||||
"%autoreload 2"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 141,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import json\n",
|
||||
"import os\n",
|
||||
"import numpy as np\n",
|
||||
"from utils import *\n",
|
||||
"import math\n",
|
||||
"import heapq\n",
|
||||
"import random"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 142,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"fd_collection = getCollection(\"team_5_mwdb_phase_2\", \"fd_collection\")\n",
|
||||
"all_images = fd_collection.find()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 143,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"image_sim-cm_fd-kmeans-10-semantics.json loaded\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"selected_latent_space = valid_latent_spaces[\n",
|
||||
" str(input(\"Enter latent space - one of \" + str(list(valid_latent_spaces.keys()))))\n",
|
||||
"]\n",
|
||||
"\n",
|
||||
"selected_feature_model = valid_feature_models[\n",
|
||||
" str(input(\"Enter feature model - one of \" + str(list(valid_feature_models.keys()))))\n",
|
||||
"]\n",
|
||||
"\n",
|
||||
"k = int(input(\"Enter value of k: \"))\n",
|
||||
"if k < 1:\n",
|
||||
" raise ValueError(\"k should be a positive integer\")\n",
|
||||
"\n",
|
||||
"selected_dim_reduction_method = str(\n",
|
||||
" input(\n",
|
||||
" \"Enter dimensionality reduction method - one of \"\n",
|
||||
" + str(list(valid_dim_reduction_methods.keys()))\n",
|
||||
" )\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"image_id = int(input(\"Enter image ID: \"))\n",
|
||||
"if image_id < 0 and image_id > 8676 and image_id % 2 != 0:\n",
|
||||
" raise ValueError(\"image id should be even number between 0 and 8676\")\n",
|
||||
"\n",
|
||||
"img_label = all_images[int(image_id / 2)][\"true_label\"]\n",
|
||||
"\n",
|
||||
"knum = int(input(\"Enter value of knum: \"))\n",
|
||||
"if knum < 1:\n",
|
||||
" raise ValueError(\"knum should be a positive integer\")\n",
|
||||
"\n",
|
||||
"match selected_latent_space:\n",
|
||||
" case \"\":\n",
|
||||
" if os.path.exists(f\"{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json\"):\n",
|
||||
" data = json.load(open(f\"{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json\"))\n",
|
||||
" print(f\"{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json loaded\")\n",
|
||||
" else:\n",
|
||||
" print(f\"{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json does not exist\")\n",
|
||||
" case \"cp\":\n",
|
||||
" if os.path.exists(f\"{selected_feature_model}-cp-{k}-semantics.json\"):\n",
|
||||
" data = json.load(open(f\"{selected_feature_model}-cp-{k}-semantics.json\"))\n",
|
||||
" print(f\"{selected_feature_model}-cp-{k}-semantics.json loaded\")\n",
|
||||
" else: \n",
|
||||
" print(f\"{selected_feature_model}-cp-{k}-semantics.json does not exist\")\n",
|
||||
" case _:\n",
|
||||
" if os.path.exists(f\"{selected_latent_space}-{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json\"):\n",
|
||||
" data = json.load(open(f\"{selected_latent_space}-{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json\"))\n",
|
||||
" print(f\"{selected_latent_space}-{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json loaded\")\n",
|
||||
" else:\n",
|
||||
" print(f\"{selected_latent_space}-{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json does not exist\")\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def extract_similarities_ls1_ls4(latent_space, dim_reduction, selected_feature_model, data, image_id):\n",
|
||||
"\n",
|
||||
" image_fd = np.array(all_images[int(image_id / 2)][selected_feature_model]).flatten()\n",
|
||||
"\n",
|
||||
" match dim_reduction:\n",
|
||||
"\n",
|
||||
" case 'svd':\n",
|
||||
" U = np.array(data[\"image-semantic\"])\n",
|
||||
" S = np.array(data[\"semantics-core\"])\n",
|
||||
" if len(S.shape) == 1:\n",
|
||||
" S = np.diag(S)\n",
|
||||
" V = np.transpose(np.array(data[\"semantic-feature\"]))\n",
|
||||
" \n",
|
||||
" comparison_feature_space = np.matmul(U, S)\n",
|
||||
"\n",
|
||||
" if latent_space == \"image_sim\":\n",
|
||||
" comparison_vector = comparison_feature_space[int(image_id / 2)]\n",
|
||||
" else:\n",
|
||||
" comparison_vector = np.matmul(np.matmul(image_fd, V), S)\n",
|
||||
" \n",
|
||||
" case \"nmf\":\n",
|
||||
" H = np.array(data['semantic-feature'])\n",
|
||||
" comparison_feature_space = np.array(data['image-semantic'])\n",
|
||||
"\n",
|
||||
" if latent_space == \"image_sim\":\n",
|
||||
" comparison_vector = comparison_feature_space[int(image_id / 2)]\n",
|
||||
" else:\n",
|
||||
" comparison_vector = np.matmul(image_fd, np.transpose(H))\n",
|
||||
"\n",
|
||||
" case \"kmeans\":\n",
|
||||
" comparison_vector = []\n",
|
||||
" comparison_feature_space = np.array(data[\"image-semantic\"])\n",
|
||||
" S = np.array(data[\"semantic-feature\"])\n",
|
||||
"\n",
|
||||
" for centroid in S:\n",
|
||||
" if latent_space == \"image_sim\":\n",
|
||||
" sim_matrix = np.array(data[\"sim-matrix\"])\n",
|
||||
" comparison_vector.append(math.dist(sim_matrix[int(image_id / 2)], centroid))\n",
|
||||
" else:\n",
|
||||
" comparison_vector.append(math.dist(image_fd, centroid))\n",
|
||||
"\n",
|
||||
" n = len(comparison_feature_space)\n",
|
||||
"\n",
|
||||
" distances = []\n",
|
||||
" for i in range(n):\n",
|
||||
" if (i * 2) != image_id:\n",
|
||||
" distances.append({\"image_id\": i, \"label\": all_images[i][\"true_label\"], \"distance\": math.dist(comparison_vector, comparison_feature_space[i])})\n",
|
||||
"\n",
|
||||
" distances = sorted(distances, key=lambda x: x[\"distance\"], reverse=False)\n",
|
||||
"\n",
|
||||
" similar_labels = []\n",
|
||||
" unique_labels = set()\n",
|
||||
"\n",
|
||||
" for img in distances:\n",
|
||||
" if img['label'] not in unique_labels:\n",
|
||||
" similar_labels.append(img)\n",
|
||||
" unique_labels.add(img[\"label\"])\n",
|
||||
"\n",
|
||||
" if len(similar_labels) == knum:\n",
|
||||
" break\n",
|
||||
"\n",
|
||||
"\n",
|
||||
" for x in similar_labels:\n",
|
||||
" print(x)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 144,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def extract_similarities_ls2(data, image_id):\n",
|
||||
"\n",
|
||||
" IS = np.array(data[\"image-semantic\"])\n",
|
||||
" S = np.array(data[\"semantics-core\"])\n",
|
||||
"\n",
|
||||
" if len(S.shape) == 1:\n",
|
||||
" S = np.diag(S)\n",
|
||||
"\n",
|
||||
" comparison_feature_space = np.matmul(IS, S)\n",
|
||||
" comparison_vector = comparison_feature_space[int(image_id / 2)]\n",
|
||||
"\n",
|
||||
" distances = []\n",
|
||||
"\n",
|
||||
" n = len(comparison_feature_space)\n",
|
||||
" for i in range(n):\n",
|
||||
" if i != (image_id / 2):\n",
|
||||
" distances.append({\"image_id\": i * 2, \"label\": all_images[i][\"true_label\"], \"distance\": math.dist(comparison_vector, comparison_feature_space[i])})\n",
|
||||
" \n",
|
||||
" distances = sorted(distances, key=lambda x: x[\"distance\"], reverse=False)\n",
|
||||
"\n",
|
||||
" similar_labels = []\n",
|
||||
" unique_labels = set()\n",
|
||||
"\n",
|
||||
" for img in distances:\n",
|
||||
" if img[\"label\"] not in unique_labels and img[\"label\"] != img_label:\n",
|
||||
" similar_labels.append(img)\n",
|
||||
" unique_labels.add(img[\"label\"])\n",
|
||||
"\n",
|
||||
" if len(similar_labels) == knum:\n",
|
||||
" break\n",
|
||||
"\n",
|
||||
"\n",
|
||||
" for x in similar_labels:\n",
|
||||
" print(x)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 145,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def extract_similarities_ls3(dim_reduction, data, image_id):\n",
|
||||
"\n",
|
||||
" img_label = all_images[int(image_id / 2)][\"true_label\"]\n",
|
||||
"\n",
|
||||
" match dim_reduction:\n",
|
||||
"\n",
|
||||
" case 'svd':\n",
|
||||
" U = np.array(data[\"image-semantic\"])\n",
|
||||
" S = np.array(data[\"semantics-core\"])\n",
|
||||
" V = np.transpose(np.array(data[\"semantic-feature\"]))\n",
|
||||
"\n",
|
||||
" comparison_feature_space = np.matmul(U, S)\n",
|
||||
" comparison_vector = comparison_feature_space[img_label]\n",
|
||||
" \n",
|
||||
" case \"nmf\":\n",
|
||||
" comparison_feature_space = np.array(data['image-semantic'])\n",
|
||||
" comparison_vector = comparison_feature_space[img_label]\n",
|
||||
"\n",
|
||||
" case \"kmeans\":\n",
|
||||
" comparison_feature_space = np.array(data[\"image-semantic\"])\n",
|
||||
" comparison_vector = comparison_feature_space[img_label]\n",
|
||||
"\n",
|
||||
" n = len(comparison_feature_space)\n",
|
||||
" distance = float('inf')\n",
|
||||
" most_similar_label = img_label\n",
|
||||
" distances = []\n",
|
||||
" for i in range(n):\n",
|
||||
" if i != img_label:\n",
|
||||
" distances.append({\"label\": i, \"distance\": math.dist(comparison_vector, comparison_feature_space[i])})\n",
|
||||
" # temp_distance = math.dist(comparison_vector, comparison_feature_space[i])\n",
|
||||
" # if distance > temp_distance:\n",
|
||||
" # distance = temp_distance\n",
|
||||
" # most_similar_label = i\n",
|
||||
"\n",
|
||||
" # label_images = [x[\"image_id\"] for x in all_images if x[\"true_label\"] == most_similar_label]\n",
|
||||
" # similar_images = random.sample(label_images, knum)\n",
|
||||
"\n",
|
||||
" # print(f\"Most similar label to {img_label} is {most_similar_label}\")\n",
|
||||
" distances = sorted(distances, key=lambda x: x[\"distance\"], reverse=False)[:knum]\n",
|
||||
"\n",
|
||||
" for img in distances:\n",
|
||||
" print(img)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 147,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"{'image_id': 2457, 'label': 39, 'distance': 5.400083378408386}\n",
|
||||
"{'image_id': 2629, 'label': 46, 'distance': 6.360136822031199}\n",
|
||||
"{'image_id': 1916, 'label': 23, 'distance': 8.279651870400942}\n",
|
||||
"{'image_id': 1975, 'label': 24, 'distance': 9.305370097143731}\n",
|
||||
"{'image_id': 3287, 'label': 65, 'distance': 9.696792665660324}\n",
|
||||
"{'image_id': 292, 'label': 1, 'distance': 10.198675122162054}\n",
|
||||
"{'image_id': 3965, 'label': 90, 'distance': 11.544874878013612}\n",
|
||||
"{'image_id': 4018, 'label': 92, 'distance': 12.064116415014514}\n",
|
||||
"{'image_id': 4307, 'label': 99, 'distance': 14.448284626506538}\n",
|
||||
"{'image_id': 2329, 'label': 35, 'distance': 14.742475318290913}\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"match selected_latent_space:\n",
|
||||
"\n",
|
||||
" case \"\" | \"image_sim\":\n",
|
||||
" \n",
|
||||
" extract_similarities_ls1_ls4(selected_latent_space, selected_dim_reduction_method, selected_feature_model, data, image_id)\n",
|
||||
"\n",
|
||||
" case \"label_sim\":\n",
|
||||
"\n",
|
||||
" extract_similarities_ls3(selected_dim_reduction_method, data, image_id)\n",
|
||||
"\n",
|
||||
" case \"cp\":\n",
|
||||
"\n",
|
||||
" extract_similarities_ls2(data, image_id)\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.11.4"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
329
Phase 2/task_9.ipynb
Normal file
329
Phase 2/task_9.ipynb
Normal file
@ -0,0 +1,329 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 207,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"The autoreload extension is already loaded. To reload it, use:\n",
|
||||
" %reload_ext autoreload\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"%load_ext autoreload\n",
|
||||
"%autoreload 2"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 208,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import json\n",
|
||||
"import os\n",
|
||||
"import numpy as np\n",
|
||||
"from utils import *\n",
|
||||
"import math\n",
|
||||
"import heapq"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 209,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"fd_collection = getCollection(\"team_5_mwdb_phase_2\", \"fd_collection\")\n",
|
||||
"all_images = fd_collection.find()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 210,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"cm_fd-cp-10-semantics.json loaded\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"selected_latent_space = valid_latent_spaces[\n",
|
||||
" str(input(\"Enter latent space - one of \" + str(list(valid_latent_spaces.keys()))))\n",
|
||||
"]\n",
|
||||
"\n",
|
||||
"selected_feature_model = valid_feature_models[\n",
|
||||
" str(input(\"Enter feature model - one of \" + str(list(valid_feature_models.keys()))))\n",
|
||||
"]\n",
|
||||
"\n",
|
||||
"k = int(input(\"Enter value of k: \"))\n",
|
||||
"if k < 1:\n",
|
||||
" raise ValueError(\"k should be a positive integer\")\n",
|
||||
"\n",
|
||||
"selected_dim_reduction_method = str(\n",
|
||||
" input(\n",
|
||||
" \"Enter dimensionality reduction method - one of \"\n",
|
||||
" + str(list(valid_dim_reduction_methods.keys()))\n",
|
||||
" )\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"label = int(input(\"Enter label: \"))\n",
|
||||
"if label < 0 and label > 100:\n",
|
||||
" raise ValueError(\"label should be between 0 and 100\")\n",
|
||||
"\n",
|
||||
"knum = int(input(\"Enter value of knum: \"))\n",
|
||||
"if knum < 1:\n",
|
||||
" raise ValueError(\"knum should be a positive integer\")\n",
|
||||
"\n",
|
||||
"label_rep = calculate_label_representatives(fd_collection, label, selected_feature_model)\n",
|
||||
"\n",
|
||||
"match selected_latent_space:\n",
|
||||
" case \"\":\n",
|
||||
" if os.path.exists(f\"{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json\"):\n",
|
||||
" data = json.load(open(f\"{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json\"))\n",
|
||||
" print(f\"{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json loaded\")\n",
|
||||
" else:\n",
|
||||
" print(f\"{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json does not exist\")\n",
|
||||
" case \"cp\":\n",
|
||||
" if os.path.exists(f\"{selected_feature_model}-cp-{k}-semantics.json\"):\n",
|
||||
" data = json.load(open(f\"{selected_feature_model}-cp-{k}-semantics.json\"))\n",
|
||||
" print(f\"{selected_feature_model}-cp-{k}-semantics.json loaded\")\n",
|
||||
" else: \n",
|
||||
" print(f\"{selected_feature_model}-cp-{k}-semantics.json does not exist\")\n",
|
||||
" case _:\n",
|
||||
" if os.path.exists(f\"{selected_latent_space}-{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json\"):\n",
|
||||
" data = json.load(open(f\"{selected_latent_space}-{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json\"))\n",
|
||||
" print(f\"{selected_latent_space}-{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json loaded\")\n",
|
||||
" else:\n",
|
||||
" print(f\"{selected_latent_space}-{selected_feature_model}-{selected_dim_reduction_method}-{k}-semantics.json does not exist\")\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 211,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def extract_similarities_ls1_ls4(latent_space, dim_reduction, data, label, label_rep):\n",
|
||||
"\n",
|
||||
" match dim_reduction:\n",
|
||||
"\n",
|
||||
" case 'svd':\n",
|
||||
" U = np.array(data[\"image-semantic\"])\n",
|
||||
" S = np.array(data[\"semantics-core\"])\n",
|
||||
" if len(S.shape) == 1:\n",
|
||||
" S = np.diag(S)\n",
|
||||
" V = np.transpose(np.array(data[\"semantic-feature\"]))\n",
|
||||
"\n",
|
||||
" if latent_space == \"image_sim\":\n",
|
||||
" label_vectors = []\n",
|
||||
" length = len(U)\n",
|
||||
" for i in range(length):\n",
|
||||
" if all_images[i][\"true_label\"] == label:\n",
|
||||
" label_vectors.append(U[i])\n",
|
||||
" label_rep = [sum(col) / len(col) for col in zip(*label_vectors)]\n",
|
||||
" \n",
|
||||
" comparison_feature_space = np.matmul(U, S)\n",
|
||||
"\n",
|
||||
" if latent_space == \"image_sim\":\n",
|
||||
" comparison_vector = np.matmul(label_rep, S)\n",
|
||||
" else:\n",
|
||||
" comparison_vector = np.matmul(np.matmul(label_rep, V), S)\n",
|
||||
" \n",
|
||||
" case \"nmf\":\n",
|
||||
" H = np.array(data['semantic-feature'])\n",
|
||||
" comparison_feature_space = W = np.array(data['image-semantic'])\n",
|
||||
" if latent_space == \"image_sim\":\n",
|
||||
" label_vectors = []\n",
|
||||
" length = len(W)\n",
|
||||
" for i in range(length):\n",
|
||||
" if all_images[i][\"true_label\"] == label:\n",
|
||||
" label_vectors.append(W[i])\n",
|
||||
" label_rep = [sum(col) / len(col) for col in zip(*label_vectors)]\n",
|
||||
"\n",
|
||||
" if latent_space == \"image_sim\":\n",
|
||||
" comparison_vector = label_rep\n",
|
||||
" else:\n",
|
||||
" comparison_vector = np.matmul(label_rep, np.transpose(H))\n",
|
||||
"\n",
|
||||
" case \"kmeans\":\n",
|
||||
" comparison_vector = []\n",
|
||||
" comparison_feature_space = np.array(data[\"image-semantic\"])\n",
|
||||
" S = np.array(data[\"semantic-feature\"])\n",
|
||||
"\n",
|
||||
" if latent_space == \"image_sim\":\n",
|
||||
" sim_matrix = np.array(data[\"sim-matrix\"])\n",
|
||||
" label_vectors = []\n",
|
||||
" length = len(sim_matrix)\n",
|
||||
" for i in range(length):\n",
|
||||
" if all_images[i][\"true_label\"] == label:\n",
|
||||
" label_vectors.append(sim_matrix[i])\n",
|
||||
" label_rep = [sum(col) / len(col) for col in zip(*label_vectors)]\n",
|
||||
"\n",
|
||||
"\n",
|
||||
" for centroid in S:\n",
|
||||
" comparison_vector.append(math.dist(label_rep, centroid))\n",
|
||||
"\n",
|
||||
" n = len(comparison_feature_space)\n",
|
||||
"\n",
|
||||
" distances = []\n",
|
||||
" for i in range(n):\n",
|
||||
" if all_images[i][\"true_label\"] != label:\n",
|
||||
" distances.append({\"image_id\": i, \"label\": all_images[i][\"true_label\"], \"distance\": math.dist(comparison_vector, comparison_feature_space[i])})\n",
|
||||
"\n",
|
||||
" distances = sorted(distances, key=lambda x: x[\"distance\"], reverse=False)\n",
|
||||
"\n",
|
||||
" similar_labels = []\n",
|
||||
" unique_labels = set()\n",
|
||||
"\n",
|
||||
" for img in distances:\n",
|
||||
" if img['label'] not in unique_labels:\n",
|
||||
" similar_labels.append(img)\n",
|
||||
" unique_labels.add(img[\"label\"])\n",
|
||||
"\n",
|
||||
" if len(similar_labels) == knum:\n",
|
||||
" break\n",
|
||||
"\n",
|
||||
"\n",
|
||||
" for x in similar_labels:\n",
|
||||
" print(x)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 233,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def extract_similarities_ls2(data, label):\n",
|
||||
"\n",
|
||||
" LS = np.array(data[\"label-semantic\"])\n",
|
||||
" S = np.array(data[\"semantics-core\"])\n",
|
||||
"\n",
|
||||
" if len(S.shape) == 1:\n",
|
||||
" S = np.diag(S)\n",
|
||||
"\n",
|
||||
" comparison_feature_space = np.matmul(LS, S)\n",
|
||||
" comparison_vector = comparison_feature_space[label]\n",
|
||||
"\n",
|
||||
" distances = []\n",
|
||||
"\n",
|
||||
" n = len(comparison_feature_space)\n",
|
||||
" for i in range(n):\n",
|
||||
" if i != label:\n",
|
||||
" distances.append({\"label\": i, \"distance\": math.dist(comparison_vector, comparison_feature_space[i])})\n",
|
||||
" \n",
|
||||
" distances = sorted(distances, key=lambda x: x[\"distance\"], reverse=False)[:knum]\n",
|
||||
"\n",
|
||||
" for x in distances:\n",
|
||||
" print(x)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 234,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def extract_similarities_ls3(dim_reduction, data, label):\n",
|
||||
"\n",
|
||||
" match dim_reduction:\n",
|
||||
"\n",
|
||||
" case 'svd':\n",
|
||||
" U = np.array(data[\"image-semantic\"])\n",
|
||||
" S = np.array(data[\"semantics-core\"])\n",
|
||||
" V = np.transpose(np.array(data[\"semantic-feature\"]))\n",
|
||||
"\n",
|
||||
" comparison_feature_space = np.matmul(U, S)\n",
|
||||
" comparison_vector = comparison_feature_space[label]\n",
|
||||
" \n",
|
||||
" case \"nmf\":\n",
|
||||
" comparison_feature_space = np.array(data['image-semantic'])\n",
|
||||
" comparison_vector = comparison_feature_space[label]\n",
|
||||
"\n",
|
||||
" case \"kmeans\":\n",
|
||||
" comparison_feature_space = np.array(data[\"image-semantic\"])\n",
|
||||
" comparison_vector = comparison_feature_space[label]\n",
|
||||
"\n",
|
||||
" n = len(comparison_feature_space)\n",
|
||||
" distances = []\n",
|
||||
" for i in range(n):\n",
|
||||
" if i != label:\n",
|
||||
" distances.append({\"label\": i, \"distance\": math.dist(comparison_vector, comparison_feature_space[i])})\n",
|
||||
"\n",
|
||||
" distances = sorted(distances, key=lambda x: x[\"distance\"], reverse=False)[:knum]\n",
|
||||
"\n",
|
||||
" for x in distances:\n",
|
||||
" print(x)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 235,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"{'label': 2, 'distance': 0.9999999999999999}\n",
|
||||
"{'label': 4, 'distance': 0.9999999999999999}\n",
|
||||
"{'label': 6, 'distance': 0.9999999999999999}\n",
|
||||
"{'label': 7, 'distance': 0.9999999999999999}\n",
|
||||
"{'label': 8, 'distance': 0.9999999999999999}\n",
|
||||
"{'label': 9, 'distance': 0.9999999999999999}\n",
|
||||
"{'label': 10, 'distance': 0.9999999999999999}\n",
|
||||
"{'label': 11, 'distance': 0.9999999999999999}\n",
|
||||
"{'label': 13, 'distance': 0.9999999999999999}\n",
|
||||
"{'label': 14, 'distance': 0.9999999999999999}\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"match selected_latent_space:\n",
|
||||
"\n",
|
||||
" case \"\" | \"image_sim\":\n",
|
||||
" \n",
|
||||
" extract_similarities_ls1_ls4(selected_latent_space, selected_dim_reduction_method, data, label, label_rep)\n",
|
||||
"\n",
|
||||
" case \"label_sim\":\n",
|
||||
"\n",
|
||||
" extract_similarities_ls3(selected_dim_reduction_method, data, label)\n",
|
||||
"\n",
|
||||
" case \"cp\":\n",
|
||||
"\n",
|
||||
" extract_similarities_ls2(data, label)\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.11.4"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
105
Phase 2/utils.py
105
Phase 2/utils.py
@ -5,10 +5,9 @@ import random
|
||||
import cv2
|
||||
import numpy as np
|
||||
from scipy.stats import pearsonr
|
||||
from scipy.sparse.linalg import svds
|
||||
from sklearn.decomposition import NMF
|
||||
# from scipy.sparse.linalg import svds
|
||||
# from sklearn.decomposition import NMF
|
||||
from sklearn.decomposition import LatentDirichletAllocation
|
||||
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
|
||||
|
||||
# from sklearn.cluster import KMeans
|
||||
|
||||
@ -276,7 +275,7 @@ def resnet_extractor(image):
|
||||
|
||||
|
||||
def resnet_output(image):
|
||||
"""Get image features from ResNet50 (full execution)"""
|
||||
"""Get image features from ResNet50 (full execution) and apply a softmax layer"""
|
||||
resized_image = (
|
||||
torch.Tensor(np.array(transforms.Resize((224, 224))(image)).flatten())
|
||||
.view(1, 3, 224, 224)
|
||||
@ -285,6 +284,7 @@ def resnet_output(image):
|
||||
|
||||
with torch.no_grad():
|
||||
features = model(resized_image)
|
||||
features = torch.nn.Softmax()(features)
|
||||
|
||||
return features.detach().cpu().tolist()
|
||||
|
||||
@ -363,6 +363,12 @@ valid_feature_models = {
|
||||
"fc": "fc_fd",
|
||||
"resnet": "resnet_fd",
|
||||
}
|
||||
valid_latent_spaces = {
|
||||
"ls1": "",
|
||||
"ls2": "cp",
|
||||
"ls3": "label_sim",
|
||||
"ls4": "image_sim",
|
||||
}
|
||||
valid_distance_measures = {
|
||||
"euclidean": euclidean_distance_measure,
|
||||
"cosine": cosine_distance_measure,
|
||||
@ -779,6 +785,65 @@ class KMeans:
|
||||
return Y
|
||||
|
||||
|
||||
def svd(matrix, k):
|
||||
# Step 1: Compute the covariance matrix
|
||||
cov_matrix = np.dot(matrix.T, matrix)
|
||||
|
||||
# Step 2: Compute the eigenvalues and eigenvectors of the covariance matrix
|
||||
eigenvalues, eigenvectors = np.linalg.eig(cov_matrix)
|
||||
|
||||
# Step 3: Sort the eigenvalues and corresponding eigenvectors
|
||||
sort_indices = eigenvalues.argsort()[::-1]
|
||||
eigenvalues = eigenvalues[sort_indices]
|
||||
eigenvectors = eigenvectors[:, sort_indices]
|
||||
|
||||
# Step 4: Compute the singular values and the left and right singular vectors
|
||||
singular_values = np.sqrt(eigenvalues)
|
||||
left_singular_vectors = np.dot(matrix, eigenvectors)
|
||||
right_singular_vectors = eigenvectors
|
||||
|
||||
# Step 5: Normalize the singular vectors
|
||||
for i in range(left_singular_vectors.shape[1]):
|
||||
left_singular_vectors[:, i] /= singular_values[i]
|
||||
|
||||
for i in range(right_singular_vectors.shape[1]):
|
||||
right_singular_vectors[:, i] /= singular_values[i]
|
||||
|
||||
# Keep only the top k singular values and their corresponding vectors
|
||||
singular_values = singular_values[:k]
|
||||
left_singular_vectors = left_singular_vectors[:, :k]
|
||||
right_singular_vectors = right_singular_vectors[:, :k]
|
||||
|
||||
return left_singular_vectors, np.diag(singular_values), right_singular_vectors.T
|
||||
|
||||
|
||||
def nmf(matrix, k, H=None, update_H=True, num_iterations=100):
|
||||
"""
|
||||
Non-negative matrix factorization by multiplicative update
|
||||
|
||||
Pass `H` and `update_H=False` to transform given data as per the given H matrix, else leave `H=None` and `update_H=True` to fit and transform
|
||||
"""
|
||||
d1, d2 = matrix.shape
|
||||
# Initialize W and H matrices with random non-negative values
|
||||
W = np.random.rand(d1, k)
|
||||
if update_H is True:
|
||||
H = np.random.rand(k, d2)
|
||||
|
||||
for iteration in range(num_iterations):
|
||||
if update_H is True:
|
||||
# Update H matrix
|
||||
numerator_h = np.dot(W.T, matrix)
|
||||
denominator_h = np.dot(np.dot(W.T, W), H)
|
||||
H *= numerator_h / denominator_h
|
||||
|
||||
# Update W matrix
|
||||
numerator_w = np.dot(matrix, H.T)
|
||||
denominator_w = np.dot(W, np.dot(H, H.T))
|
||||
W *= numerator_w / denominator_w
|
||||
|
||||
return W, H
|
||||
|
||||
|
||||
def extract_latent_semantics_from_feature_model(
|
||||
fd_collection,
|
||||
k,
|
||||
@ -822,9 +887,8 @@ def extract_latent_semantics_from_feature_model(
|
||||
|
||||
match valid_dim_reduction_methods[dim_reduction_method]:
|
||||
# singular value decomposition
|
||||
# sparse version of SVD to get only k singular values
|
||||
case 1:
|
||||
U, S, V_T = svds(feature_vectors, k=k)
|
||||
U, S, V_T = svd(feature_vectors, k=k)
|
||||
|
||||
all_latent_semantics = {
|
||||
"image-semantic": U.tolist(),
|
||||
@ -849,18 +913,7 @@ def extract_latent_semantics_from_feature_model(
|
||||
min_value = np.min(feature_vectors)
|
||||
feature_vectors_shifted = feature_vectors - min_value
|
||||
|
||||
model = NMF(
|
||||
n_components=k,
|
||||
init="random",
|
||||
solver="cd",
|
||||
alpha_H=0.01,
|
||||
alpha_W=0.01,
|
||||
max_iter=10000,
|
||||
)
|
||||
model.fit(feature_vectors_shifted)
|
||||
|
||||
W = model.transform(feature_vectors_shifted)
|
||||
H = model.components_
|
||||
W, H = nmf(feature_vectors_shifted, k)
|
||||
|
||||
all_latent_semantics = {
|
||||
"image-semantic": W.tolist(),
|
||||
@ -996,9 +1049,8 @@ def extract_latent_semantics_from_sim_matrix(
|
||||
|
||||
match valid_dim_reduction_methods[dim_reduction_method]:
|
||||
# singular value decomposition
|
||||
# sparse version of SVD to get only k singular values
|
||||
case 1:
|
||||
U, S, V_T = svds(feature_vectors, k=k)
|
||||
U, S, V_T = svd(feature_vectors, k=k)
|
||||
|
||||
all_latent_semantics = {
|
||||
"image-semantic": U.tolist(),
|
||||
@ -1023,18 +1075,7 @@ def extract_latent_semantics_from_sim_matrix(
|
||||
min_value = np.min(feature_vectors)
|
||||
feature_vectors_shifted = feature_vectors - min_value
|
||||
|
||||
model = NMF(
|
||||
n_components=k,
|
||||
init="random",
|
||||
solver="cd",
|
||||
alpha_H=0.01,
|
||||
alpha_W=0.01,
|
||||
max_iter=10000,
|
||||
)
|
||||
model.fit(feature_vectors_shifted)
|
||||
|
||||
W = model.transform(feature_vectors_shifted)
|
||||
H = model.components_
|
||||
W, H = nmf(feature_vectors_shifted, k)
|
||||
|
||||
all_latent_semantics = {
|
||||
"image-semantic": W.tolist(),
|
||||
|
||||
1391
phase2_madhura.ipynb
1391
phase2_madhura.ipynb
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user