You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
575 lines
31 KiB
575 lines
31 KiB
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# சாத்தியத்தன்மை மற்றும் புள்ளியியல் அறிமுகம்\n",
|
|
"இந்த நோட்புக் இல், நாம் முன்பு விவாதித்த சில கருத்துக்களுடன் விளையாடப் போகிறோம். சாத்தியத்தன்மை மற்றும் புள்ளியியல் சார்ந்த பல கருத்துகள் Python இல் தரவு செயலாக்கத்திற்கான முக்கிய நூலகங்களில், உதாரணமாக `numpy` மற்றும் `pandas` எல்லாம் நன்கு பிரதிநிதித்துவம் பெறப்பட்டுள்ளன.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import numpy as np\n",
|
|
"import pandas as pd\n",
|
|
"import random\n",
|
|
"import matplotlib.pyplot as plt"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## சீரற்ற மாறிகள் மற்றும் பகிர்வுகள்\n",
|
|
"0 முதல் 9 வரை உள்ள ஒரே அளவுக் கொள்கலிலிருந்து 30 மதிப்புகளின் ஒரு மாதிரியை வரைவேண்டாம். நாமும் சராசரி மற்றும் வேறுபாட்டை கணக்கிடுவோம்.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"sample = [ random.randint(0,10) for _ in range(30) ]\n",
|
|
"print(f\"Sample: {sample}\")\n",
|
|
"print(f\"Mean = {np.mean(sample)}\")\n",
|
|
"print(f\"Variance = {np.var(sample)}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"மாதிரியில் எத்தனை வெவ்வேறு மதிப்புகள் உள்ளன என்று கண்ணோட்டமாகக் கணக்கிட, நாம் **வரிசைக்கோட்டு வரைபடம்** வரைந்து பார்க்கலாம்:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"plt.hist(sample)\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## உண்மையான தரவுகளை பகுப்பாய்வு செய்தல்\n",
|
|
"\n",
|
|
"உண்மை உலக தரவுகளை பகுப்பாய்வு செய்யும் போது சராசரி மற்றும் மாற்றமளவு மிகவும் முக்கியமானவை. [SOCR MLB Height/Weight Data](http://wiki.stat.ucla.edu/socr/index.php/SOCR_Data_MLB_HeightsWeights) இருந்து பேஸ்பால் வீரர்களுக்கான தரவை ஏற்றுவோம்\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"df = pd.read_csv(\"../../data/SOCR_MLB.tsv\",sep='\\t', header=None, names=['Name','Team','Role','Weight','Height','Age'])\n",
|
|
"df\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"> நாம் இங்கே தரவு பகுப்பாய்விக்காக [**Pandas**](https://pandas.pydata.org/) எனும் தொகுப்பை பயன்படுத்துகிறோம். Python இல் Pandas மற்றும் தரவுடன் வேலை செய்வதில் மேலும் இந்த பாடநெறியில் தாங்கள் அறிந்துகொள்வோம்.\n",
|
|
"\n",
|
|
"வருகை, உயரம் மற்றும் உடல் எடையின் சராசரி மதிப்புகளை கணக்கிடுவோம்:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"df[['Age','Height','Weight']].mean()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"இப்போது உயரத்துக்கு கவனம் செலுத்தி, எடைசிதுபத்தையும் வேறுபாடையும் கணக்கிடுவோம்: \n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"print(list(df['Height'])[:20])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"mean = df['Height'].mean()\n",
|
|
"var = df['Height'].var()\n",
|
|
"std = df['Height'].std()\n",
|
|
"print(f\"Mean = {mean}\\nVariance = {var}\\nStandard Deviation = {std}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"சராசரிக்கு கூடுதலாக, மைய மதிப்பு மற்றும் நான்காம் பாகங்களைப் பார்ப்பது பொருத்தமானது. அவை **பாக்ஸ் பிளாட்** ஐ பயன்படுத்தி காட்சிப்படுத்தலாம்:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"plt.figure(figsize=(10,2))\n",
|
|
"plt.boxplot(df['Height'].ffill(), orientation='horizontal', showmeans=True)\n",
|
|
"plt.grid(color='gray', linestyle='dotted')\n",
|
|
"plt.tight_layout()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"நமது தரவுத்தொகுப்பின் துணைவகுப்புகளின் பெட்டிக் கட்டங்களையும் உருவாக்கலாம், எடுத்துக்காட்ட olarak, வீரர் பங்கை அடிப்படையாகக் கொண்டிருக்கும். \n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"df.boxplot(column='Height', by='Role', figsize=(10,8))\n",
|
|
"plt.xticks(rotation='vertical')\n",
|
|
"plt.tight_layout()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"> **குறிப்பு**: இந்த வரைபடம், சராசரியாக முதலாவது பாஸ்மேன் உயரங்கள் இரண்டாவது பாஸ்மேன் உயரங்களைவிட அதிகமானவை என்று கூறுகிறது. பின்னர், இந்த கூற்றை எவ்வாறு முறையான முறையில் சோதிக்கலாம் மற்றும் எமது தரவு புள்ளியியல் ரீதியாக முக்கியமானது என்பதை எவ்வாறு நிரூபிக்கலாம் என்பதை அறிந்துகொள்ளப்போகிறோம். \n",
|
|
"\n",
|
|
"வயது, உயரம் மற்றும் எடை அனைத்தும் தொடர்ச்சியான சீரற்ற மாறிலிகள். அவற்றின் பகிர்வை நீங்கள் என்ன என்று நினைக்கிறீர்கள்? மதிப்புகளின் வரிசைப்படி வரைவாய் வரைபாட்டை (ஹிஸ்டோகிராம்) வரைதல் ஒரு நல்ல முறையாகும்: \n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"df['Weight'].hist(bins=15, figsize=(10,6))\n",
|
|
"plt.suptitle('Weight distribution of MLB Players')\n",
|
|
"plt.xlabel('Weight')\n",
|
|
"plt.ylabel('Count')\n",
|
|
"plt.tight_layout()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## சாதாரண பகிர்வு\n",
|
|
"\n",
|
|
"நம்முடைய உண்மையான தரவுகளின் அதே சராசரி மற்றும் மாறுபாட்டுடன் கூடிய சாதாரண பகிர்வை பின்பற்றும் செயற்கை அளவைக் கொடுப்பதாக உருவாக்குவோம்:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"generated = np.random.normal(mean, std, 1000)\n",
|
|
"generated[:20]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"plt.figure(figsize=(10,6))\n",
|
|
"plt.hist(generated, bins=15)\n",
|
|
"plt.tight_layout()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"plt.figure(figsize=(10,6))\n",
|
|
"plt.hist(np.random.normal(0,1,50000), bins=300)\n",
|
|
"plt.tight_layout()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"உண்மையான வாழ்க்கையில் பெரும்பாலான மதிப்புகள் சாதாரணமாக توزيعப்படுவதால், மாதிரித் தரவை உருவாக்க ஒரே மாதிரியான சீரான சீரற்ற எண் உருவாக்கியை பயன்படுத்தக் கூடாது. சீரான توزيع ஆக எடைகளை உருவாக்க முயன்றால் என்ன நிகழ்கிறது என்பதை இங்கே காணலாம் (`np.random.rand` மூலம் உருவாக்கப்பட்டது):\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"wrong_sample = np.random.rand(1000)*2*std+mean-std\n",
|
|
"plt.figure(figsize=(10,6))\n",
|
|
"plt.hist(wrong_sample)\n",
|
|
"plt.tight_layout()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## நம்பிக்கை இடைவெளிகள்\n",
|
|
"\n",
|
|
"இப்போது நாம் பேஸ்பால் வீரர்களின் எடைகள் மற்றும் உயரங்களுக்கு நம்பிக்கை இடைவெளிகளை கணக்கிடுவோம். நாம் இந்தக் கோடை [இந்த stackoverflow விவாதத்திலிருந்து](https://stackoverflow.com/questions/15033511/compute-a-confidence-interval-from-sample-data) பயன்படுத்துகிறோம்:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import scipy.stats\n",
|
|
"\n",
|
|
"def mean_confidence_interval(data, confidence=0.95):\n",
|
|
" a = 1.0 * np.array(data)\n",
|
|
" n = len(a)\n",
|
|
" m, se = np.mean(a), scipy.stats.sem(a)\n",
|
|
" h = se * scipy.stats.t.ppf((1 + confidence) / 2., n-1)\n",
|
|
" return m, h\n",
|
|
"\n",
|
|
"for p in [0.85, 0.9, 0.95]:\n",
|
|
" m, h = mean_confidence_interval(df['Weight'].ffill(),p)\n",
|
|
" print(f\"p={p:.2f}, mean = {m:.2f} ± {h:.2f}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## ஊகசோதனை\n",
|
|
"\n",
|
|
"நாம் எமது பேஸ்பால் வீரர் தரவுத்தொகுப்பில் உள்ள வெவ்வேறு பாத்திரங்களை ஆராய்ந்து பார்க்கலாம்:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"df.groupby('Role').agg({ 'Weight' : 'mean', 'Height' : 'mean', 'Age' : 'count'}).rename(columns={ 'Age' : 'Count'})"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"முதன்மை பேஸ்மேன்கள் இரண்டாவது பேஸ்மேன்களுக்கு விட உயரமாக இருப்பதாக உள்ள கருத்தை பரிசோதிப்போம். இதைச் செய்வதற்கான எளிதான வழி நம்பிக்கைக் கோட்டுகளை தேர்வு செய்வதே ஆகும்:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"for p in [0.85,0.9,0.95]:\n",
|
|
" m1, h1 = mean_confidence_interval(df.loc[df['Role']=='First_Baseman',['Height']],p)\n",
|
|
" m2, h2 = mean_confidence_interval(df.loc[df['Role']=='Second_Baseman',['Height']],p)\n",
|
|
" print(f'Conf={p:.2f}, 1st basemen height: {m1-h1[0]:.2f}..{m1+h1[0]:.2f}, 2nd basemen height: {m2-h2[0]:.2f}..{m2+h2[0]:.2f}')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"இடைவேளைகள் ஒரே நேரத்தில் இல்லாததை நாம் பார்க்க முடிகிறது.\n",
|
|
"\n",
|
|
"கருத்தை பறைசாற்றுவதற்கு புள்ளியியல் ரீதியாக சரியான வழி **ஸ்டூடென்ட் t-சோதனை** பயன்படுத்துவது ஆகும்:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from scipy.stats import ttest_ind\n",
|
|
"\n",
|
|
"tval, pval = ttest_ind(df.loc[df['Role']=='First_Baseman',['Height']], df.loc[df['Role']=='Second_Baseman',['Height']],equal_var=False)\n",
|
|
"print(f\"T-value = {tval[0]:.2f}\\nP-value: {pval[0]}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"`ttest_ind` செயல்பாடு வழங்கும் இரண்டு மதிப்புகள்:\n",
|
|
"* p-மதிப்பு என்பது இரண்டு பகிர்வுகளின் சராசரி ஒரே மாதிரியானவை என்பதற்கான சாத்தியமாக கருதப்படலாம். எங்கள் விவகாரத்தில், இது மிகவும் குறைவாக உள்ளது, இது முதல் பேஸ்மேன் உயரமாக இருப்பதற்கான பலமான ஆதாரத்தை குறிக்கின்றது.\n",
|
|
"* t-மதிப்பு என்பது t-சோதனையில் பயன்படுத்தப்படும் சாதாரணப்படுத்தப்பட்ட சராசரி வேறுபாட்டின் நடுநிலை மதிப்பாகும், மேலும் இது கொடுக்கப்பட்ட நம்பிக்கை மதிப்பிற்கான எல்லை மதிப்புடன் ஒப்பிடப்படுகிறது.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## மைய வரம்பு கோட்பாட்டுடன் சாதாரண பங்கீட்டைக் கண்காணித்தல்\n",
|
|
"\n",
|
|
"பைத்தானில் உள்ள புது-சீரற்ற உருவாக்கி ஒரு ஒரே மாதிரிப் பங்கீடு வழங்க உருவாக்கப்பட்டது. நாம் சாதாரண பங்கீட்டுக்கான உருவாக்கியை உருவாக்க விரும்பினால், மைய வரம்பு கோட்பாட்டைப் பயன்படுத்தலாம். சாதாரணமாக பங்கீட்டுப்பெறும் மதிப்பை பெற நாம் ஒட்டுமொத்தமாக உருவாக்கப்பட்ட மாதிரியின் சராசரியை கணக்கிடுவோம்.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def normal_random(sample_size=100):\n",
|
|
" sample = [random.uniform(0,1) for _ in range(sample_size) ]\n",
|
|
" return sum(sample)/sample_size\n",
|
|
"\n",
|
|
"sample = [normal_random() for _ in range(100)]\n",
|
|
"plt.figure(figsize=(10,6))\n",
|
|
"plt.hist(sample)\n",
|
|
"plt.tight_layout()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## தொடர்பு மற்றும் தீய பேஸ்பால் கார்ப்பரேஷன்\n",
|
|
"\n",
|
|
"தொடர்பு மூலம் நாம் தரவு தொடர்களுக்கு இடையிலான உறவுகளை கண்டறிய முடியும். நமது விளையாட்டு உதாரணத்தில், ஒரு தீய பேஸ்பால் கம்பெனி தங்கள் வீரர்களுக்கு அவர்களின் உயரத்துக்கு ஏற்ப சம்பளம் கொடுப்பதாக நினைக்கலாம் - உயரமானவர் વધારે பணம் பெறுவார். அடிப்படையான சம்பளம் $1000, மேலும் உயரம் அடிப்படையில் $0 முதல் $100 வரை ஒரு கூடுதல் போனஸ் உள்ளது என எடுத்துக்கொள்வோம். நாங்கள் MLB-இல் இருந்து உண்மையான வீரர்களை எடுத்துக் கொண்டு, அவர்களது கற்பனை சம்பளங்களை கணக்கிடுவோம்:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"heights = df['Height'].ffill()\n",
|
|
"salaries = 1000+(heights-heights.min())/(heights.max()-heights.mean())*100\n",
|
|
"print(list(zip(heights, salaries))[:10])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"இப்போது அந்த தொடர்களின் கூட்டாற்பாட்டையும் தொடர்பட்டுக் கூர்தலையும் கணக்கிடுவோம். `np.cov`என்பது நமக்கு **கூட்டாற்பாட்டு அட்டவணையை** வழங்கும், இது பல மாறிலிகளுக்கு கூட்டாற்பாட்டின் விரிவாக்கம் ஆகும். கூட்டாற்பாட்டு அட்டவணை $M$ இன் கூறு $M_{ij}$ என்பது உள்ளீட்டு மாறிலிகள் $X_i$ மற்றும் $X_j$ ஆகியவற்றுக்கிடையேயான தொடர்பு ஆகும், மேலும் ஒருமுக எழுத்து வடிவிலுள்ள मानங்கள் $M_{ii}$ என்பது $X_{i}$ இன் பரவலாகும். அதேபோல், `np.corrcoef` நமக்கு **தொடர்புச் சுருக்க அட்டவணையை** வழங்கும்.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"print(f\"Covariance matrix:\\n{np.cov(heights, salaries)}\")\n",
|
|
"print(f\"Covariance = {np.cov(heights, salaries)[0,1]}\")\n",
|
|
"print(f\"Correlation = {np.corrcoef(heights, salaries)[0,1]}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"1 என்ற தொடர்பு என்பது இரண்டு மாறிலிகள் இடையில் ஒரு வலுவான **எழுத்து சார்ந்த உறவு** இருப்பதை குறிக்கும். ஒருவருடைய மதிப்பை மற்றவர்மீது வரைதல் மூலம் எழுத்து சார்ந்த உறவைக் காணலாம்:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"plt.figure(figsize=(10,6))\n",
|
|
"plt.scatter(heights,salaries)\n",
|
|
"plt.tight_layout()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"தொடர்பு நேரியல் அல்லாதது என்றால் என்ன நடக்கும் என்று பார்ப்போம். நமது நிறுவனமானது உயரங்களுக்கும் சம்பளங்களுக்குமான தெளிவான நேரியல் சார்பை மறைக்க முடிவு செய்தது, மேலும் சூத்திரத்தில் `sin` போன்ற ஒரு தவிர்க்க முடியாத மாறுபாட்டை அறிமுகப்படுத்தியது என்று கருதுக: \n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"salaries = 1000+np.sin((heights-heights.min())/(heights.max()-heights.mean()))*100\n",
|
|
"print(f\"Correlation = {np.corrcoef(heights, salaries)[0,1]}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"இந்த நிலையில், தொடர்பு சிறிது குறைவாக உள்ளது, ஆனால் அது இன்னும் மிகவும் உயர்ந்ததே ஆகும். இப்போது, அந்த உறவை இன்னும் குறைவாகத் தெரியப்படுத்த, சம்பளத்திற்கு சில கூடுதல் சீரில்லாத தன்மைகளைச் சேர்க்க விரும்பலாம். என்ன நடக்கும் என்று பார்ப்போம்:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"salaries = 1000+np.sin((heights-heights.min())/(heights.max()-heights.mean()))*100+np.random.random(size=len(heights))*20-10\n",
|
|
"print(f\"Correlation = {np.corrcoef(heights, salaries)[0,1]}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"plt.figure(figsize=(10,6))\n",
|
|
"plt.scatter(heights, salaries)\n",
|
|
"plt.tight_layout()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"> இந்தப் புள்ளிகள் இப்படி செங்குத்து கோடுகளாக வரிசைப்படுத்தப்படுவது ஏன் என்று நீங்கள் கணிக்க முடியுமா?\n",
|
|
"\n",
|
|
"சம்பளம் போன்ற செயற்கையாக வடிவமைக்கப்பட்ட கருத்து மற்றும் நோக்கப்பட்ட மாறிலி *உடலளவு* இடையேயான தொடர்பை நாம் கவனித்துள்ளோம். உயரம் மற்றும் எடை போன்ற இரண்டு நோக்கப்பட்ட மாறிலிகளும் தொடர்புடையவையா என்று பார்ப்போம்:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"np.corrcoef(df['Height'].ffill(),df['Weight'])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"துரதிருஷ்டவசமாக, எங்களுக்கு எந்த முடிவுகளும் கிடைக்கவில்லை - சில அசாதாரண `nan` மதிப்புகள் மட்டும் கிடைத்தன. இது எமது வரிசை மதிப்புகளில் சில வரையறுக்கப்படாதவை, `nan` எனக் காணப்படுவது காரணமாக, செயல்பாட்டின் முடிவு கூட வரையறுக்கப்படாததாக மாறுகிறது. அட்டவணையைப் பார்க்கும்போது `Weight` என்பது பிரச்சனையான பத்தி என்பதை நாங்கள் காணலாம், ஏனெனில் `Height` மதிப்புக்கிடையேயான சுய தொடர்பு கணக்கிடப்பட்டுள்ளது.\n",
|
|
"\n",
|
|
"> இந்த உதாரணம் **தரவு முன்னோட்டம்** மற்றும் **தெளிவேற்றத் திறன்** என்பவற்றின் முக்கியத்துவத்தை காட்டுகிறது. சரியான தரவின்றி எதையும் கணக்கிட முடியாது.\n",
|
|
"\n",
|
|
"`fillna` முறையை பயன்படுத்தி இழந்த மதிப்புகளை நிரப்பி, தொடர்பை கணக்கிடுவோம்:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"np.corrcoef(df['Height'].ffill(), df['Weight'])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"உண்மையில் ஒரு தொடர்பு உள்ளது, ஆனால் எங்கள் செயற்கை எடுத்துக்காட்டில் உள்ளதைப் போன்ற பலத்த தொடர்பு அல்ல. உண்மையில், நாம் ஒரு மதிப்பை மற்றொன்றுடன் ஒப்பிடும் புள்ளி வரைபடத்தைப் பார்த்தால், அந்த தொடர்பு மிகவும் தெளிவாக இருக்காது:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"plt.figure(figsize=(10,6))\n",
|
|
"plt.scatter(df['Weight'],df['Height'])\n",
|
|
"plt.xlabel('Weight')\n",
|
|
"plt.ylabel('Height')\n",
|
|
"plt.tight_layout()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## முடிவு\n",
|
|
"\n",
|
|
"இந்த நோட்புக் இல், தரவு மீது அடிப்படையான செயல்பாடுகளை எப்படி செய்ய வேண்டும் மற்றும் புள்ளியியல் செயல்பாடுகளை எப்படி கணக்கிடுவது என்று கற்றுக்கொண்டோம். சில கருதுகோள்களை நிரூபிக்க கணிதம் மற்றும் புள்ளியியல் பற்றிய உறுதியான கருவியை எப்படி பயன்படுத்துவது என்பதை நாம் இப்போது அறிந்துள்ளோம், மற்றும் தரவு மாதிரியைப் பயன்படுத்தி சீரற்ற மாறிலிகளுக்கு நம்பகத்தன்மை இடைவெளிகளை எப்படி கணக்கிடுவது என்பதைப் பற்றி அறிவோம்.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**மறுப்பு**:\nஇந்த ஆவணம் AI மொழிபெயர்ப்பு சேவை [Co-op Translator](https://github.com/Azure/co-op-translator) பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது. நாங்கள் துல்லியத்திற்காக முயற்சி செய்துள்ளோம், ஆனால் தானாக செய்யப்படும் மொழிபெயர்ப்புகளில் பிழைகள் அல்லது தவறுகள் இருக்கலாம் என்பதை கவனத்தில் கொள்ளவும். அசல் ஆவணம் அதன் தாய்மொழியில் அதிகாரப்பூர்வ ஆதாரமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்நுட்பமான மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பைப் பயன்படுத்துவதால் ஏற்படும் எந்த தவறான புரிதல்கள் அல்லது தவறான விளக்கத்திற்கும் நாங்கள் பொறுப்பில்வில்லை.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"interpreter": {
|
|
"hash": "86193a1ab0ba47eac1c69c1756090baa3b420b3eea7d4aafab8b85f8b312f0c5"
|
|
},
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"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.9.6"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 4
|
|
} |