TIF_E41211247_POPO/model/knn_model.ipynb

432 lines
32 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"# Derajat 0\n",
"def derajat0 (img):\n",
" max - np.max(img)\n",
" imgTmp = np.zeros([max+1,max+1])\n",
" for i in range (len(img)):\n",
" for j in range (len(img[i])-1):\n",
" imgTmp[img[i][j], img[i,j+1]] +=1\n",
"\n",
" transpos - np.transpose(imgTmp)\n",
" data - imgTmp + transpos\n",
"\n",
" tmp = 0\n",
" for i in range (len(data)):\n",
" for j in range (len(data)):\n",
" tmp += data[i,j]\n",
" for i in range (len(data)):\n",
" for j in range (len(data)):\n",
" data[i,j] /= tmp\n",
" return data\n",
"\n",
"# Derajat 45\n",
"def derajat45 (img):\n",
" max - np.max(img)\n",
" imgTmp = np.zeros([max+1,max+1])\n",
" for i in range (len(img)):\n",
" for j in range (len(img[i])-1):\n",
" imgTmp[img[i][j], img[i,j+1]] +=1\n",
"\n",
" transpos - np.transpose(imgTmp)\n",
" data - imgTmp + transpos\n",
"\n",
" tmp = 0\n",
" for i in range (len(data)):\n",
" for j in range (len(data)):\n",
" tmp += data[i,j]\n",
" for i in range (len(data)):\n",
" for j in range (len(data)):\n",
" data[i,j] /= tmp\n",
" return data\n",
"\n",
"# Derajat 90\n",
"def derajat90 (img):\n",
" max - np.max(img)\n",
" imgTmp = np.zeros([max+1,max+1])\n",
" for i in range (len(img)):\n",
" for j in range (len(img[i])-1):\n",
" imgTmp[img[i][j], img[i,j+1]] +=1\n",
"\n",
" transpos - np.transpose(imgTmp)\n",
" data - imgTmp + transpos\n",
"\n",
" tmp = 0\n",
" for i in range (len(data)):\n",
" for j in range (len(data)):\n",
" tmp += data[i,j]\n",
" for i in range (len(data)):\n",
" for j in range (len(data)):\n",
" data[i,j] /= tmp\n",
" return data\n",
"\n",
"# Derajat 135\n",
"def derajat135 (img):\n",
" max - np.max(img)\n",
" imgTmp = np.zeros([max+1,max+1])\n",
" for i in range (len(img)):\n",
" for j in range (len(img[i])-1):\n",
" imgTmp[img[i][j], img[i,j+1]] +=1\n",
"\n",
" transpos - np.transpose(imgTmp)\n",
" data - imgTmp + transpos\n",
"\n",
" tmp = 0\n",
" for i in range (len(data)):\n",
" for j in range (len(data)):\n",
" tmp += data[i,j]\n",
" for i in range (len(data)):\n",
" for j in range (len(data)):\n",
" data[i,j] /= tmp\n",
" return data"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"# contrast\n",
"def contrast (data):\n",
" contrast = 0\n",
" for i in range (len(data)):\n",
" for j in range (len(data)):\n",
" contrast += data[i,j] *pow(i-j,2)\n",
" return contrast\n",
"\n",
"# entropy\n",
"def entropy (data):\n",
" entropy = 0\n",
" for i in range (len(data)):\n",
" for j in range (len(data)):\n",
" if data[i,j] > 0.0:\n",
" entropy += - (data[i,j] * math.log(data[i,j]))\n",
" return entropy\n",
"\n",
"# homogenitas\n",
"def homogenitas (data):\n",
" homogenitas = 0\n",
" for i in range (len(data)):\n",
" for j in range (len(data)):\n",
" homogenitas += data[i,j]*(1+(pow(i-j,2)))\n",
" return homogenitas\n",
"\n",
"# energy\n",
"def energy (data):\n",
" energy = 0\n",
" for i in range (len(data)):\n",
" for j in range (len(data)):\n",
" energy += data[i,j]**2\n",
" return energy"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"ename": "KeyboardInterrupt",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
"Cell \u001b[1;32mIn[9], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# KNN\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01msklearn\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mneighbors\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m KNeighborsClassifier\n\u001b[0;32m 3\u001b[0m knn \u001b[38;5;241m=\u001b[39m KNeighborsClassifier(n_neighbors\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m3\u001b[39m)\n\u001b[0;32m 4\u001b[0m knn\u001b[38;5;241m.\u001b[39mfit(data, label)\n",
"File \u001b[1;32mc:\\Users\\pozak\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\sklearn\\__init__.py:96\u001b[0m\n\u001b[0;32m 85\u001b[0m \u001b[38;5;66;03m# `_distributor_init` allows distributors to run custom init code.\u001b[39;00m\n\u001b[0;32m 86\u001b[0m \u001b[38;5;66;03m# For instance, for the Windows wheel, this is used to pre-load the\u001b[39;00m\n\u001b[0;32m 87\u001b[0m \u001b[38;5;66;03m# vcomp shared library runtime for OpenMP embedded in the sklearn/.libs\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 90\u001b[0m \u001b[38;5;66;03m# later is linked to the OpenMP runtime to make it possible to introspect\u001b[39;00m\n\u001b[0;32m 91\u001b[0m \u001b[38;5;66;03m# it and importing it first would fail if the OpenMP dll cannot be found.\u001b[39;00m\n\u001b[0;32m 92\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m (\n\u001b[0;32m 93\u001b[0m __check_build, \u001b[38;5;66;03m# noqa: F401\u001b[39;00m\n\u001b[0;32m 94\u001b[0m _distributor_init, \u001b[38;5;66;03m# noqa: F401\u001b[39;00m\n\u001b[0;32m 95\u001b[0m )\n\u001b[1;32m---> 96\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mbase\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m clone\n\u001b[0;32m 97\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutils\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_show_versions\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m show_versions\n\u001b[0;32m 99\u001b[0m __all__ \u001b[38;5;241m=\u001b[39m [\n\u001b[0;32m 100\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcalibration\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m 101\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcluster\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 142\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mshow_versions\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m 143\u001b[0m ]\n",
"File \u001b[1;32mc:\\Users\\pozak\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\sklearn\\base.py:19\u001b[0m\n\u001b[0;32m 17\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_config\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m config_context, get_config\n\u001b[0;32m 18\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mexceptions\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m InconsistentVersionWarning\n\u001b[1;32m---> 19\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutils\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_estimator_html_repr\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m _HTMLDocumentationLinkMixin, estimator_html_repr\n\u001b[0;32m 20\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutils\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_metadata_requests\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m _MetadataRequester, _routing_enabled\n\u001b[0;32m 21\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutils\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_param_validation\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m validate_parameter_constraints\n",
"File \u001b[1;32mc:\\Users\\pozak\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\sklearn\\utils\\__init__.py:13\u001b[0m\n\u001b[0;32m 11\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m _joblib, metadata_routing\n\u001b[0;32m 12\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_bunch\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Bunch\n\u001b[1;32m---> 13\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_chunking\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m gen_batches, gen_even_slices\n\u001b[0;32m 14\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_estimator_html_repr\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m estimator_html_repr\n\u001b[0;32m 16\u001b[0m \u001b[38;5;66;03m# Make _safe_indexing importable from here for backward compat as this particular\u001b[39;00m\n\u001b[0;32m 17\u001b[0m \u001b[38;5;66;03m# helper is considered semi-private and typically very useful for third-party\u001b[39;00m\n\u001b[0;32m 18\u001b[0m \u001b[38;5;66;03m# libraries that want to comply with scikit-learn's estimator API. In particular,\u001b[39;00m\n\u001b[0;32m 19\u001b[0m \u001b[38;5;66;03m# _safe_indexing was included in our public API documentation despite the leading\u001b[39;00m\n\u001b[0;32m 20\u001b[0m \u001b[38;5;66;03m# `_` in its name.\u001b[39;00m\n",
"File \u001b[1;32mc:\\Users\\pozak\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\sklearn\\utils\\_chunking.py:8\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mnumpy\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mnp\u001b[39;00m\n\u001b[0;32m 7\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_config\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m get_config\n\u001b[1;32m----> 8\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_param_validation\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Interval, validate_params\n\u001b[0;32m 11\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mchunk_generator\u001b[39m(gen, chunksize):\n\u001b[0;32m 12\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Chunk generator, ``gen`` into lists of length ``chunksize``. The last\u001b[39;00m\n\u001b[0;32m 13\u001b[0m \u001b[38;5;124;03m chunk may have a length less than ``chunksize``.\"\"\"\u001b[39;00m\n",
"File \u001b[1;32mc:\\Users\\pozak\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\sklearn\\utils\\_param_validation.py:14\u001b[0m\n\u001b[0;32m 11\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mscipy\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01msparse\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m csr_matrix, issparse\n\u001b[0;32m 13\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_config\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m config_context, get_config\n\u001b[1;32m---> 14\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mvalidation\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m _is_arraylike_not_scalar\n\u001b[0;32m 17\u001b[0m \u001b[38;5;28;01mclass\u001b[39;00m \u001b[38;5;21;01mInvalidParameterError\u001b[39;00m(\u001b[38;5;167;01mValueError\u001b[39;00m, \u001b[38;5;167;01mTypeError\u001b[39;00m):\n\u001b[0;32m 18\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Custom exception to be raised when the parameter of a class/method/function\u001b[39;00m\n\u001b[0;32m 19\u001b[0m \u001b[38;5;124;03m does not have a valid type or value.\u001b[39;00m\n\u001b[0;32m 20\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n",
"File \u001b[1;32mc:\\Users\\pozak\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\sklearn\\utils\\validation.py:29\u001b[0m\n\u001b[0;32m 27\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m get_config \u001b[38;5;28;01mas\u001b[39;00m _get_config\n\u001b[0;32m 28\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mexceptions\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m DataConversionWarning, NotFittedError, PositiveSpectrumWarning\n\u001b[1;32m---> 29\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutils\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_array_api\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m _asarray_with_order, _is_numpy_namespace, get_namespace\n\u001b[0;32m 30\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutils\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mfixes\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m ComplexWarning, _preserve_dia_indices_dtype\n\u001b[0;32m 31\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_isfinite\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m FiniteStatus, cy_isfinite\n",
"File \u001b[1;32mc:\\Users\\pozak\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\sklearn\\utils\\_array_api.py:11\u001b[0m\n\u001b[0;32m 8\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mscipy\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mspecial\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mspecial\u001b[39;00m\n\u001b[0;32m 10\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_config\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m get_config\n\u001b[1;32m---> 11\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mfixes\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m parse_version\n\u001b[0;32m 13\u001b[0m _NUMPY_NAMESPACE_NAMES \u001b[38;5;241m=\u001b[39m {\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnumpy\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124marray_api_compat.numpy\u001b[39m\u001b[38;5;124m\"\u001b[39m}\n\u001b[0;32m 16\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21myield_namespaces\u001b[39m(include_numpy_namespaces\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m):\n",
"File \u001b[1;32mc:\\Users\\pozak\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\sklearn\\utils\\fixes.py:20\u001b[0m\n\u001b[0;32m 18\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mscipy\u001b[39;00m\n\u001b[0;32m 19\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mscipy\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01msparse\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mlinalg\u001b[39;00m\n\u001b[1;32m---> 20\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mscipy\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mstats\u001b[39;00m\n\u001b[0;32m 22\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01msklearn\u001b[39;00m\n\u001b[0;32m 24\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mexternals\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_packaging\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mversion\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m parse \u001b[38;5;28;01mas\u001b[39;00m parse_version\n",
"File \u001b[1;32mc:\\Users\\pozak\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\scipy\\stats\\__init__.py:628\u001b[0m\n\u001b[0;32m 626\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_entropy\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m\n\u001b[0;32m 627\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_hypotests\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m\n\u001b[1;32m--> 628\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_rvs_sampling\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m rvs_ratio_uniforms\n\u001b[0;32m 629\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_page_trend_test\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m page_trend_test\n\u001b[0;32m 630\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_mannwhitneyu\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m mannwhitneyu\n",
"File \u001b[1;32mc:\\Users\\pozak\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\scipy\\stats\\_rvs_sampling.py:2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mwarnings\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mscipy\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mstats\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01msampling\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m RatioUniforms\n\u001b[0;32m 4\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mrvs_ratio_uniforms\u001b[39m(pdf, umax, vmin, vmax, size\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m, c\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m, random_state\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m):\n\u001b[0;32m 5\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 6\u001b[0m \u001b[38;5;124;03m Generate random samples from a probability density function using the\u001b[39;00m\n\u001b[0;32m 7\u001b[0m \u001b[38;5;124;03m ratio-of-uniforms method.\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 47\u001b[0m \u001b[38;5;124;03m Please refer to `scipy.stats.sampling.RatioUniforms` for the documentation.\u001b[39;00m\n\u001b[0;32m 48\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n",
"File \u001b[1;32mc:\\Users\\pozak\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\scipy\\stats\\sampling.py:59\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 2\u001b[0m \u001b[38;5;124;03m======================================================\u001b[39;00m\n\u001b[0;32m 3\u001b[0m \u001b[38;5;124;03mRandom Number Generators (:mod:`scipy.stats.sampling`)\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 57\u001b[0m \n\u001b[0;32m 58\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m---> 59\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_sampling\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m FastGeneratorInversion, RatioUniforms \u001b[38;5;66;03m# noqa: F401\u001b[39;00m\n\u001b[0;32m 60\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_unuran\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01munuran_wrapper\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m ( \u001b[38;5;66;03m# noqa: F401\u001b[39;00m\n\u001b[0;32m 61\u001b[0m TransformedDensityRejection,\n\u001b[0;32m 62\u001b[0m DiscreteAliasUrn,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 67\u001b[0m UNURANError\n\u001b[0;32m 68\u001b[0m )\n\u001b[0;32m 70\u001b[0m __all__ \u001b[38;5;241m=\u001b[39m [\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNumericalInverseHermite\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNumericalInversePolynomial\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m 71\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mTransformedDensityRejection\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mSimpleRatioUniforms\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m 72\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRatioUniforms\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mDiscreteAliasUrn\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mDiscreteGuideTable\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m 73\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mUNURANError\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mFastGeneratorInversion\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n",
"File \u001b[1;32mc:\\Users\\pozak\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\scipy\\stats\\_sampling.py:8\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mscipy\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m special \u001b[38;5;28;01mas\u001b[39;00m sc\n\u001b[0;32m 6\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_qmc\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m (check_random_state \u001b[38;5;28;01mas\u001b[39;00m check_random_state_qmc,\n\u001b[0;32m 7\u001b[0m Halton, QMCEngine)\n\u001b[1;32m----> 8\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_unuran\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01munuran_wrapper\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m NumericalInversePolynomial\n\u001b[0;32m 9\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mscipy\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_lib\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_util\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m check_random_state\n\u001b[0;32m 12\u001b[0m __all__ \u001b[38;5;241m=\u001b[39m [\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mFastGeneratorInversion\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mRatioUniforms\u001b[39m\u001b[38;5;124m'\u001b[39m]\n",
"File \u001b[1;32m<frozen importlib._bootstrap>:404\u001b[0m, in \u001b[0;36mparent\u001b[1;34m(self)\u001b[0m\n",
"\u001b[1;31mKeyboardInterrupt\u001b[0m: "
]
}
],
"source": [
"# KNN\n",
"from sklearn.neighbors import KNeighborsClassifier\n",
"knn = KNeighborsClassifier(n_neighbors=3)\n",
"knn.fit(data, label)\n",
"knn.score(data, label)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"pred_class = knn.predict(X_test)\n",
"print(pred_class)\n",
"pred_class.shape"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# evalueasi\n",
"from sklearn.metrics import accuracy_score\n",
"score = accuracy_score(y_test, pred_class)\n",
"print(\"model accuracy knn\", score*100, \"%\")\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from sklearn import metrics\n",
"print(metrics)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Potongan 1,1 (3x3 piksel):\n",
"+---------+---------+---------+\n",
"| R = 250 | R = 251 | R = 251 |\n",
"| G = 255 | G = 255 | G = 252 |\n",
"| B = 255 | B = 255 | B = 255 |\n",
"+---------+---------+---------+\n",
"| R = 249 | R = 254 | R = 255 |\n",
"| G = 253 | G = 255 | G = 254 |\n",
"| B = 254 | B = 255 | B = 255 |\n",
"+---------+---------+---------+\n",
"| R = 255 | R = 253 | R = 254 |\n",
"| G = 255 | G = 251 | G = 249 |\n",
"| B = 255 | B = 254 | B = 253 |\n",
"+---------+---------+---------+\n",
"---------\n",
"Potongan 1,2 (3x3 piksel):\n",
"+---------+---------+---------+\n",
"| R = 255 | R = 255 | R = 255 |\n",
"| G = 253 | G = 252 | G = 246 |\n",
"| B = 255 | B = 255 | B = 246 |\n",
"+---------+---------+---------+\n",
"| R = 255 | R = 255 | R = 255 |\n",
"| G = 253 | G = 249 | G = 244 |\n",
"| B = 255 | B = 250 | B = 243 |\n",
"+---------+---------+---------+\n",
"| R = 250 | R = 255 | R = 255 |\n",
"| G = 244 | G = 252 | G = 231 |\n",
"| B = 246 | B = 250 | B = 230 |\n",
"+---------+---------+---------+\n",
"---------\n",
"Potongan 1,3 (3x3 piksel):\n",
"+---------+---------+---------+\n",
"| R = 255 | R = 193 | R = 182 |\n",
"| G = 233 | G = 154 | G = 121 |\n",
"| B = 228 | B = 149 | B = 126 |\n",
"+---------+---------+---------+\n",
"| R = 168 | R = 135 | R = 130 |\n",
"| G = 133 | G = 84 | G = 63 |\n",
"| B = 131 | B = 83 | B = 70 |\n",
"+---------+---------+---------+\n",
"| R = 123 | R = 113 | R = 118 |\n",
"| G = 67 | G = 40 | G = 38 |\n",
"| B = 70 | B = 47 | B = 49 |\n",
"+---------+---------+---------+\n",
"---------\n",
"Potongan 2,1 (3x3 piksel):\n",
"+---------+---------+---------+\n",
"| R = 253 | R = 255 | R = 255 |\n",
"| G = 248 | G = 251 | G = 253 |\n",
"| B = 252 | B = 252 | B = 253 |\n",
"+---------+---------+---------+\n",
"| R = 254 | R = 255 | R = 255 |\n",
"| G = 248 | G = 253 | G = 252 |\n",
"| B = 252 | B = 255 | B = 248 |\n",
"+---------+---------+---------+\n",
"| R = 255 | R = 255 | R = 242 |\n",
"| G = 239 | G = 240 | G = 222 |\n",
"| B = 247 | B = 246 | B = 221 |\n",
"+---------+---------+---------+\n",
"---------\n",
"Potongan 2,2 (3x3 piksel):\n",
"+---------+---------+---------+\n",
"| R = 255 | R = 255 | R = 214 |\n",
"| G = 252 | G = 247 | G = 174 |\n",
"| B = 251 | B = 243 | B = 174 |\n",
"+---------+---------+---------+\n",
"| R = 248 | R = 219 | R = 170 |\n",
"| G = 235 | G = 185 | G = 115 |\n",
"| B = 229 | B = 183 | B = 118 |\n",
"+---------+---------+---------+\n",
"| R = 154 | R = 171 | R = 184 |\n",
"| G = 123 | G = 115 | G = 111 |\n",
"| B = 120 | B = 118 | B = 118 |\n",
"+---------+---------+---------+\n",
"---------\n",
"Potongan 2,3 (3x3 piksel):\n",
"+---------+---------+---------+\n",
"| R = 124 | R = 136 | R = 125 |\n",
"| G = 54 | G = 53 | G = 34 |\n",
"| B = 62 | B = 63 | B = 49 |\n",
"+---------+---------+---------+\n",
"| R = 134 | R = 118 | R = 111 |\n",
"| G = 63 | G = 34 | G = 17 |\n",
"| B = 71 | B = 47 | B = 35 |\n",
"+---------+---------+---------+\n",
"| R = 209 | R = 159 | R = 110 |\n",
"| G = 125 | G = 68 | G = 16 |\n",
"| B = 138 | B = 85 | B = 34 |\n",
"+---------+---------+---------+\n",
"---------\n",
"Potongan 3,1 (3x3 piksel):\n",
"+---------+---------+---------+\n",
"| R = 231 | R = 192 | R = 169 |\n",
"| G = 194 | G = 151 | G = 119 |\n",
"| B = 211 | B = 165 | B = 128 |\n",
"+---------+---------+---------+\n",
"| R = 185 | R = 222 | R = 167 |\n",
"| G = 133 | G = 165 | G = 96 |\n",
"| B = 155 | B = 184 | B = 110 |\n",
"+---------+---------+---------+\n",
"| R = 204 | R = 242 | R = 171 |\n",
"| G = 140 | G = 172 | G = 88 |\n",
"| B = 166 | B = 196 | B = 106 |\n",
"+---------+---------+---------+\n",
"---------\n",
"Potongan 3,2 (3x3 piksel):\n",
"+---------+---------+---------+\n",
"| R = 129 | R = 181 | R = 168 |\n",
"| G = 67 | G = 98 | G = 72 |\n",
"| B = 72 | B = 108 | B = 84 |\n",
"+---------+---------+---------+\n",
"| R = 145 | R = 183 | R = 212 |\n",
"| G = 59 | G = 81 | G = 101 |\n",
"| B = 72 | B = 95 | B = 120 |\n",
"+---------+---------+---------+\n",
"| R = 141 | R = 145 | R = 156 |\n",
"| G = 44 | G = 34 | G = 38 |\n",
"| B = 61 | B = 53 | B = 62 |\n",
"+---------+---------+---------+\n",
"---------\n",
"Potongan 3,3 (3x3 piksel):\n",
"+---------+---------+---------+\n",
"| R = 208 | R = 253 | R = 177 |\n",
"| G = 105 | G = 151 | G = 86 |\n",
"| B = 126 | B = 173 | B = 104 |\n",
"+---------+---------+---------+\n",
"| R = 187 | R = 214 | R = 179 |\n",
"| G = 70 | G = 106 | G = 90 |\n",
"| B = 96 | B = 132 | B = 110 |\n",
"+---------+---------+---------+\n",
"| R = 164 | R = 154 | R = 200 |\n",
"| G = 45 | G = 45 | G = 115 |\n",
"| B = 73 | B = 74 | B = 138 |\n",
"+---------+---------+---------+\n",
"---------\n"
]
}
],
"source": [
"from PIL import Image\n",
"from tabulate import tabulate \n",
"\n",
"# Load image\n",
"image_path = 'D:\\Kuliah\\SKRIPSI\\Kakao\\cacao_dataset\\phytophthora8 .jpg' # Ganti dengan path gambar yang Anda upload\n",
"img = Image.open(image_path)\n",
"\n",
"# Convert image to RGB\n",
"img_rgb = img.convert(\"RGB\")\n",
"\n",
"# Set ukuran potongan piksel (3x3)\n",
"crop_size = (3, 3)\n",
"\n",
"# Ukuran grid yang diinginkan (contoh: 3x3)\n",
"grid_rows = 3\n",
"grid_cols = 3\n",
"\n",
"# Fungsi untuk memotong gambar dan mendapatkan nilai RGB\n",
"def get_rgb_crops(img_rgb, crop_size, grid_rows, grid_cols):\n",
" img_width, img_height = img_rgb.size\n",
" rgb_values = []\n",
" \n",
" # Ambil potongan 3x3 dari beberapa area gambar\n",
" for row in range(grid_rows):\n",
" row_rgb = []\n",
" for col in range(grid_cols):\n",
" x = col * crop_size[0]\n",
" y = row * crop_size[1]\n",
" box = (x, y, x + crop_size[0], y + crop_size[1])\n",
" cropped_img = img_rgb.crop(box)\n",
" \n",
" # Ambil nilai RGB dari potongan 3x3\n",
" cropped_rgb = []\n",
" for i in range(crop_size[1]):\n",
" row_pixels = []\n",
" for j in range(crop_size[0]):\n",
" pixel_rgb = cropped_img.getpixel((j, i))\n",
" row_pixels.append(f\"R = {pixel_rgb[0]}\\nG = {pixel_rgb[1]}\\nB = {pixel_rgb[2]}\")\n",
" cropped_rgb.append(row_pixels)\n",
" \n",
" row_rgb.append(cropped_rgb)\n",
" rgb_values.append(row_rgb)\n",
" \n",
" return rgb_values\n",
"\n",
"# Dapatkan nilai RGB dari potongan 3x3\n",
"rgb_crops = get_rgb_crops(img_rgb, crop_size, grid_rows, grid_cols)\n",
"\n",
"# Fungsi untuk mencetak hasil dalam bentuk tabel\n",
"def print_rgb_table(rgb_crops, grid_rows, grid_cols):\n",
" for row in range(grid_rows):\n",
" for col in range(grid_cols):\n",
" print(f\"Potongan {row+1},{col+1} (3x3 piksel):\")\n",
" print(tabulate(rgb_crops[row][col], tablefmt=\"grid\"))\n",
" print(\"---------\")\n",
"\n",
"# Cetak hasil dalam bentuk tabel\n",
"print_rgb_table(rgb_crops, grid_rows, grid_cols)"
]
}
],
"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.10.11"
}
},
"nbformat": 4,
"nbformat_minor": 2
}