{"id":657,"date":"2022-08-14T09:25:16","date_gmt":"2022-08-14T09:25:16","guid":{"rendered":"https:\/\/tbekk.com\/devstream\/?p=657"},"modified":"2022-09-11T11:14:30","modified_gmt":"2022-09-11T11:14:30","slug":"eda-is-more-of-an-art-than-science","status":"publish","type":"post","link":"https:\/\/tbekk.com\/devstream\/2022\/08\/14\/eda-is-more-of-an-art-than-science\/","title":{"rendered":"EDA Is More Of An Art Than Science"},"content":{"rendered":"\n<p class=\"has-medium-gray-color has-text-color has-huge-font-size\">Know your data first \u2014 Its super important to build models<\/p>\n\n\n\n<p id=\"36ac\">Exploratory Data Analysis (EDA) is the one the significant process (if not the most significant) in building a machine learning model for a specific problem because without knowing your data one can hardly make a useful model.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>\u201cAll models are wrong but some models<\/strong>&nbsp;<strong>are<\/strong>&nbsp;<strong>useful<\/strong>.\u201d \u2014 George E.P Box<\/p><\/blockquote>\n\n\n\n<p id=\"ca0a\">EDA enable us to understand the distributions, anomalies and relations between features in the data unfortunately there is no standard procedure or process in place for EDA as it is currently more of an art than science which is why many beginners struggle with EDA and often clueless about how to go about it. Due to absence of any structure some people make a hasty move by applying machine learning algorithms which often produce a sub-optimal model which might work well on specific sample but struggle in production.<\/p>\n\n\n\n<p id=\"4e57\">EDA is still more of an art and once you in a middle of the analysis things often get tangled if you are going in without a plan so in this blog I will try jot down the heuristic way of how many data scientist approach EDA in my data science projects.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"a43a\">The Bird\u2019s Eye View:<\/h1>\n\n\n\n<p id=\"6e64\">Before jumping right into complex multivariate analysis and finding correlations within data it is a common practice to have a basic understanding of the data such as fields, data types, possible data issues and distributions which will enable us to ask the right questions in in-depth analysis.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>Basic Info:<\/strong><\/p><\/blockquote>\n\n\n\n<p id=\"6ba2\">Knowing very basic details such as number of rows, columns, how many fields are having null or missing values can come in handy it is seems pretty basic right? but it will be building block to do more advanced exploration.<\/p>\n\n\n\n<pre id=\"block-677fb114-4dd3-429f-9f1e-f2fd72fd80db\" class=\"wp-block-preformatted\"><em># load data into dataframe #<br>df = pd.read_csv('titles.csv')<br><br># check few rows #<br>df.head(5)<br><br># shape of data # <br>df.shape<br><br># basic info # <br>df.info()<\/em><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>Five Number Summary:<\/strong><\/p><\/blockquote>\n\n\n\n<p id=\"aa1e\">Going beyond basic details five number summary can help you pin-point the key statistics about your data such as mean, median, mode, quartiles, standard deviation, minimum &amp; maximum. These statistics can help figure out if there is anything you need to look into more detail such as a feature having a very high standard deviation or its mean and median are depicting two different center point of distribution (in case of skewness in the data)<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># 01. Five Number Summary for Numeric Features # \ndf.describe()\n\n\n# 02. Five Number Summary for Categorical Features #\ndf.describe(include='O')<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>Pairwise Analysis:<\/strong><\/p><\/blockquote>\n\n\n\n<p id=\"082d\">In order to get a quick glimpse of relation between all variables pair plot is a fairly quick and easy way to plot all possible combinations for us. These charts allow us to know unusual pattern (if exist) and more importantly it is where we start to build many hypothesis.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># 01. Relevant Imports #\nimport matplotlib.pyplot \nimport seaborn as sns\n\n# 02. Pairplot # \nsns.pairplot(df)<\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*SFKhqSWb2t0mDORqDfFcZw.png\" alt=\"\"\/><figcaption><a href=\"https:\/\/seaborn.pydata.org\/generated\/seaborn.pairplot.html\" rel=\"noreferrer noopener\" target=\"_blank\">Seaborn Pairplot<\/a><\/figcaption><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>Distributions:<\/strong><\/p><\/blockquote>\n\n\n\n<p id=\"5b66\">Knowing your data distributions can come in handy while understanding the nature of the data &amp; more importantly when applying statistical methods which have their own set of assumptions and limitation it is a good idea to validate the specific distribution to build a more reliable model.<\/p>\n\n\n\n<p id=\"a8b9\">Though five number summary also provide key statistics about data which provide understanding about distribution but in general it is good idea to plot histogram and density plot to understand the shape, outliers and skewness in the data.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># 01. Imports # \nimport seaborn as sns\nimport matplotlib.pyplot as plt\n\n# 02. Load Data # \npenguins = sns.load_dataset(\"penguins\")\n\n# 02. Histogram # \nsns.displot(penguins, x=\"flipper_length_mm\")\nplt.savefig('Histogram.png')\n\n# 03. Histogram with hue and step # \nsns.displot(penguins, x=\"flipper_length_mm\", hue=\"species\", element=\"step\")\nplt.savefig('Histogram_with_hue_step.png')\n\n# 04. Histogram with hue and stack # \nsns.displot(penguins, x=\"flipper_length_mm\", hue=\"species\", multiple=\"stack\")\nplt.savefig('Histogram_with_hue_stack.png')\n\n# 05. Histogram with hue and stack # \nsns.displot(penguins, x=\"flipper_length_mm\", col=\"sex\")\nplt.savefig('Histogram_with_col.png')\n\n\n# 06. Density Plot # \nsns.displot(penguins, x=\"flipper_length_mm\", kind=\"kde\")\nplt.savefig('density.png')<\/pre>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><tbody><tr><td><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/720\/1*X1Wi_UgE-n5As9319F1kVA.png\"><\/td><td><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1440\/1*wZlOUwMA-WhCz78swIrkog.png\"><\/td><td><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/888\/1*EeRcTZKPpub-VNzpGoHtSQ.png\"><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/888\/1*EeRcTZKPpub-VNzpGoHtSQ.png\"><\/td><td><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/720\/1*3hrghTdIseQ_-ytne-ac9w.png\"><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p id=\"62c6\">In general EDA along the way will also provide you with insights about where data cleaning and processing is required because real-world dataset are often not in most desired form.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"23f3\">Deep Dive &amp; build hypothesis:<\/h1>\n\n\n\n<p id=\"41d1\">Once we have basic understanding of the data it is time to dive into more complex analysis by asking questions and building hypothesis along the way.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>Univariate, Bivariate &amp; Multivariate Analysis:<\/strong><\/p><\/blockquote>\n\n\n\n<p id=\"4c87\">It is always a good idea to have little information about the data to begin with with questioning the data such as can gender in titanic tragedy impact survival chances? Are discounts driving people to buy coffee at starbucks more than thrice in a week?<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># 01. Imports #\nimport seaborn as sns\nimport matplotlib.pyplot as plt\n\n# 02. Load Data # \ntips = sns.load_dataset(\"tips\")\n\n# 03. Facets - Example 01 # \n\ng = sns.FacetGrid(tips, col=\"time\", hue=\"sex\")\ng.map_dataframe(sns.scatterplot, x=\"total_bill\", y=\"tip\")\ng.add_legend()\ng.savefig(\"facet_plot_example_1.png\")\n\n# 03. Facets - Example 02 # \ng = sns.FacetGrid(tips, col=\"sex\", row=\"time\", margin_titles=True)\ng.map_dataframe(sns.scatterplot, x=\"total_bill\", y=\"tip\")\ng.set_axis_labels(\"Total bill ($)\", \"Tip ($)\")\ng.set_titles(col_template=\"{col_name} patrons\", row_template=\"{row_name}\")\ng.set(xlim=(0, 60), ylim=(0, 12), xticks=[10, 30, 50], yticks=[2, 6, 10])\ng.tight_layout()\ng.savefig(\"facet_plot_example_2.png\")\n\n# 04. Joint Plot # \nsns.jointplot(data=penguins, x=\"bill_length_mm\", y=\"bill_depth_mm\", hue=\"species\")\nplt.savefig('Jointplot.png')\n\n# 05. Linear regression plot # \ng = sns.lmplot(x=\"total_bill\", y=\"tip\", hue=\"smoker\", data=tips, markers=[\"o\", \"x\"])\nplt.savefig('lmplot.png')\n\n# 06. Scatterplot # \nsns.scatterplot(data=tips, x=\"total_bill\", y=\"tip\", hue=\"size\")\nplt.savefig('scatterplot.png')\n\n# 07. Barplot or category plot # \ng = sns.catplot(x=\"sex\", y=\"total_bill\",\n                hue=\"smoker\", col=\"time\",\n                data=tips, kind=\"bar\",\n                height=4, aspect=.7)\n\nplt.savefig('barplot.png')\n\n# 08 Heatmap # \n# Load the example flights dataset and convert to long-form\nflights_long = sns.load_dataset(\"flights\")\nflights = flights_long.pivot(\"month\", \"year\", \"passengers\")\n\n# Draw a heatmap with the numeric values in each cell\nf, ax = plt.subplots(figsize=(9, 6))\nsns.heatmap(flights, annot=True, fmt=\"d\", linewidths=.5, ax=ax)\nplt.savefig('heatmap.png')<\/pre>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/910\/1*dBMskvpUtl3gV5HoR0no3w.png\"><\/td><td><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/990\/1*lB1jn71vfZARTFpHWDpUdg.png\"><\/td><td><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/848\/1*LRAeUExclJi1_qEmCMThBg.png\"><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1296\/1*L-DSegy905oNXEqaaB7WFg.png\"><\/td><td><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/864\/1*jR7NppxgswDATOCAkUj_Ag.png\"><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/824\/1*iwsMR3eADlqd7T7xTRa_kA.png\"><\/td><td><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/864\/1*PjiE49e574Uyc-EcQk7HiA.png\"><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p id=\"e4fa\">Let data visualizations answer the questions about the data and while doing so there will be more questions that will be emerge in the process and often getting more complex hence towards involving more than two variables (multivariate analysis)<\/p>\n\n\n\n<p id=\"fa41\">For more details about multivariate analysis you can read my blog specifically on this topic&nbsp;<a href=\"https:\/\/medium.com\/analytics-vidhya\/multivariate-analysis-with-seaborn-622aaedc6ecc\">here<\/a>&nbsp;and similarly for univariate analysis you can refer&nbsp;<a href=\"https:\/\/medium.com\/analytics-vidhya\/exploratory-data-analysis-part-i-7992935f0b9b\">this<\/a>.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>Hypothesis building:<\/strong><\/p><\/blockquote>\n\n\n\n<p id=\"9f5d\">Hypothesis in simple terms \u201c<strong>assumptions about the data<\/strong>\u201d. These assumptions will be develop during prior steps. Jot down all the hypothesis and try to validate it by data visualizations in the first place and in the second phase there are more accurate statistical methods for hypothesis testing.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1008\/0*DxP6WZBGAfpmbqNt.png\" alt=\"\" width=\"486\" height=\"347\"\/><figcaption>Survival Count wrt Gender in Titanic Dataset<\/figcaption><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>H0 (Null Hypothesis)<\/strong>: Gender has not differentiation power and can\u2019t be used as a feature to predict survival chance of passenger.<\/li><li><strong>H1 (Alternate Hypothesis)<\/strong>: Gender can be relatively a good feature to predict the survival chance of passenger.<\/li><\/ul>\n\n\n\n<p id=\"7277\">As per bar plot there seems to be some significance of the gender over survival chance but it is always a good idea to have statistically validate hypothesis before coming to the conclusion.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>Correlations &amp; Associations:<\/strong><\/p><\/blockquote>\n\n\n\n<p id=\"7e91\">First thing first&nbsp;<strong>\u201ccorrelation is not causation\u201d<\/strong>&nbsp;in its simple terms it is expressing a relation between two numeric variables and these variables can have positive or negative relation.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*bTnpPf2J8UnRFBUWqV_s1Q.png\" alt=\"\"\/><figcaption><a href=\"https:\/\/www.tylervigen.com\/spurious-correlations\" rel=\"noreferrer noopener\" target=\"_blank\">Spurious Correlations<\/a><\/figcaption><\/figure>\n\n\n\n<p id=\"20af\">Why correlation is not causation? because it can be due to some other cofounding variables such as delivery time in food delivery business might be highly correlated with weekend (where demand is usually high) which suggest a strong correlation between weekend and delivery time but in actual short of working hours (fleet) on weekend seems more plausible reason here and probably a cofounding variable so sometimes correlation can be deceiving nonetheless it is a valuable information to find the features.<\/p>\n\n\n\n<p id=\"67c3\">While there are different type of correlations for different situations and for which I will be writing a separate blog in the future so right now we are strictly talking about&nbsp;<strong><em>pearson correlation.<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># 01. Imports # \nimport pandas as pd \nimport numpy as np \nimport matplotlib.pyplot as plt \nimport seaborn as sns\n\n# 02. load data # \ndf = pd.read_csv('titles.csv')\n\n# 03. Calculate Correlation # \ncorr = df.corr()\n\n# 04. Plot heatmap #\nfig, ax = plt.subplots(figsize=(10,5))\nsns.heatmap(corr,annot=True)<\/pre>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1244\/1*K0_p03VYxmBTP1Hmo2GxnA.png\" alt=\"\"\/><figcaption>Correlation Heatmap<\/figcaption><\/figure>\n\n\n\n<p id=\"e2bf\">While correlation is specifically talking about linear relationship between two variables association is on the other hand talks about the some relation (not necessarily linear) between two variable.<\/p>\n\n\n\n<p id=\"d1ed\">Correlation is primarily used for numeric variables whereas association is used for categorical variable to answer questions such as can gender really influence survival chance? Can specific brand of mobile more prone to poor battery life?<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"6ca8\">Inferential statistics &amp; feature selection:<\/h1>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>Hypothesis Testing:<\/strong><\/p><\/blockquote>\n\n\n\n<p id=\"0848\">By now you have build few hypothesis from data \u2014 Some hypothesis can be nullify through data visualization and analysis only. Hypothesis testing is where more plausible hypothesis go through more accurate statistical methods such as ANOVA, T-Test etc to validate the assumptions about the data. In the following code ANOVA is used to validate if weight of penguins depend on their species.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># 01. Imports # \nimport pandas as pd \nimport numpy as np \nimport matplotlib.pyplot as plt \nimport seaborn as sns\n\n# 02. load data # \ndf = pd.read_csv('titles.csv')\n\n# 03. Calculate Correlation # \ncorr = df.corr()\n\n# 04. Plot heatmap #\nfig, ax = plt.subplots(figsize=(10,5))\nsns.heatmap(corr,annot=True)<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>Feature Selection Methods:<\/strong><\/p><\/blockquote>\n\n\n\n<p id=\"ed13\">Feature selection can be part of feature engineering or it can be included in the EDA. In feature engineering the primary focus is on generating more features or reducing dimensionality.<\/p>\n\n\n\n<p id=\"573e\">There are three methods which can be used to find the most relevant features hence feature selection.<\/p>\n\n\n\n<p id=\"4333\"><strong>Wrapper Method<\/strong>&nbsp;\u2014 Greedy approach to add or remove feature based on inference draw from model performance.<\/p>\n\n\n\n<p id=\"d568\"><strong>Filter Method&nbsp;<\/strong>\u2014 Use statistical test such as correlation, ANOVA and chi-square test to find the most optimal set of features.<\/p>\n\n\n\n<p id=\"5130\"><strong>Intrinsic Method<\/strong>&nbsp;\u2014 Using machine learning models such as Lasso regression and Random Forest to find the feature importance.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># 01. Imports #\nfrom sklearn.datasets import load_boston\nimport joblib\nimport sys\nsys.modules['sklearn.externals.joblib'] = joblib\nfrom mlxtend.feature_selection import SequentialFeatureSelector as SFS\nfrom sklearn.linear_model import LinearRegression\nimport pandas as pd\nimport numpy as np\n\n\n\n# 02. Load Data &amp; convert into pandas dataframe #\nboston = load_boston()\ndf = pd.DataFrame(boston.data, columns=boston.feature_names)\ndf['PRICE'] = pd.Series(boston.target)\n\n# 03. Data split #\nX = df.iloc[:,:13]\ny = df.iloc[:,-1]\n\n# 04. Sequential Forward Selection (sfs) #\nsfs = SFS(LinearRegression(),\n           k_features=5,\n           forward=True,\n           floating=False,\n           scoring = 'r2',\n           cv = 0)\n\nsfs.fit(X, y)\n\n# 05. Create a dataframe for the SFS results #\ndf_SFS_results = pd.DataFrame(sfs.subsets_).transpose()\ndf_SFS_results<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\"># 01. Imports # \nfrom pandas import read_csv\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.feature_selection import SelectKBest\nfrom sklearn.feature_selection import f_classif\nfrom matplotlib import pyplot\nimport pandas as pd \n\n# 02. Load Data # \ndf = pd.read_csv('pima-indians-diabetes.csv')\n\n# 03. Filter Method - ANOVA # \ndef load_dataset(filename):\n\t# load the dataset as a pandas DataFrame\n\tdata = read_csv(filename, header=None)\n\t# retrieve numpy array\n\tdataset = data.values\n\t# split into input (X) and output (y) variables\n\tX = dataset[:, :-1]\n\ty = dataset[:,-1]\n\treturn X, y\n \n# feature selection\ndef select_features(X_train, y_train, X_test):\n\t# configure to select all features\n\tfs = SelectKBest(score_func=f_classif, k='all')\n\t# learn relationship from training data\n\tfs.fit(X_train, y_train)\n\t# transform train input data\n\tX_train_fs = fs.transform(X_train)\n\t# transform test input data\n\tX_test_fs = fs.transform(X_test)\n\treturn X_train_fs, X_test_fs, fs\n \n# load the dataset\nX, y = load_dataset('pima-indians-diabetes.csv')\n# split into train and test sets\nX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=1)\n# feature selection\nX_train_fs, X_test_fs, fs = select_features(X_train, y_train, X_test)\n# what are scores for the features\nfor i in range(len(fs.scores_)):\n\tprint('Feature %d: %f' % (i, fs.scores_[i]))\n# plot the scores\npyplot.bar([i for i in range(len(fs.scores_))], fs.scores_)\npyplot.title('Feature Importance - Filter Method (ANOVA)')\npyplot.savefig('filter_method.png')\npyplot.show()<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\"># 01. Imports # \nfrom sklearn.ensemble import RandomForestClassifier\nimport pandas as pd \nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\n# 02. Load Data #\ndf = pd.read_csv('pima-indians-diabetes.csv')\n\n# 03. Create X &amp; Y Variable #\nX = df.drop(['9'],1)\ny = df['9']\n\n# 04. Train Random Foreset # \nmodel = RandomForestClassifier().fit(X,y)\n\n# 05. Fetch Feature Importance #\nimportant_features = pd.DataFrame((model.feature_importances_*100), index = X.columns, columns=['importance']).sort_values('importance', ascending=False)\n\n# 06. Plot Feature Importance # \nfig, ax = plt.subplots(figsize=(10,5))\nsns.barplot(x='index', y='importance',data=important_features)\nplt.title('Feature Importance - Intrinsic Method (Random Forest)')\nplt.savefig('Intrinsic Method.png')\nplt.show()<\/pre>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/864\/1*jWUJ--sDWpHz8P_Wll83FQ.png\"><\/td><td><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1440\/1*i9ccmVAKG9tLPv9eKi_B2Q.png\"><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*tl03ybJ3UIOAvSVMbtclLw.png\" alt=\"\"\/><figcaption>Feature Selection \u2014 Wrapper Method<\/figcaption><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"a02e\">Final Note:<\/h1>\n\n\n\n<p id=\"10b3\">While there is no standard procedure for EDA \u2014 I have tried to put things into a little structure for anyone who is starting their journey into data science. Though this is how I approach EDA and have seen many data scientist to follow similar procedure but I will be more than happy to learn if you know a different approach.<\/p>\n\n\n\n<p id=\"0c62\">Thank you for your time. You can always reach out at&nbsp;<a href=\"https:\/\/www.linkedin.com\/in\/sehan-ahmed\/\" rel=\"noreferrer noopener\" target=\"_blank\"><strong><em>Sehan.Farooqui<\/em><\/strong><\/a><\/p>\n\n\n\n<p>Know your data first \u2014 Its super important to build models.<\/p>\n\n\n\n<hr class=\"wp-block-separator is-style-wide\"\/>\n\n\n\n<ul class=\"wp-block-list\"><li><em><strong>Link:<\/strong> <a href=\"https:\/\/sehanfarooqui10.medium.com\/eda-is-more-of-an-art-than-science-b03b92e08430\">EDA Is More An Art&#8230;<\/a><\/em><\/li><li><em><strong>Publication date: <\/strong>Sunday August 14th, 2022<\/em><\/li><li><em><strong>Author: <\/strong><a href=\"https:\/\/www.linkedin.com\/in\/sehan-ahmed\/\">Sehan Ahmed<\/a><\/em><\/li><\/ul>\n\n\n\n<hr class=\"wp-block-separator is-style-wide\"\/>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Know your data first \u2014 Its super important to build models Exploratory Data Analysis (EDA) is the one the significant process (if not the most significant) in building a machine&#8230; <a class=\"read-more-link\" href=\"https:\/\/tbekk.com\/devstream\/2022\/08\/14\/eda-is-more-of-an-art-than-science\/\">Read more &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[51,44,19],"tags":[151,150,74],"class_list":["post-657","post","type-post","status-publish","format-standard","hentry","category-article","category-data-analysis","category-ml","tag-data-analysis","tag-eda","tag-py"],"_links":{"self":[{"href":"https:\/\/tbekk.com\/devstream\/wp-json\/wp\/v2\/posts\/657","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tbekk.com\/devstream\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tbekk.com\/devstream\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tbekk.com\/devstream\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tbekk.com\/devstream\/wp-json\/wp\/v2\/comments?post=657"}],"version-history":[{"count":9,"href":"https:\/\/tbekk.com\/devstream\/wp-json\/wp\/v2\/posts\/657\/revisions"}],"predecessor-version":[{"id":668,"href":"https:\/\/tbekk.com\/devstream\/wp-json\/wp\/v2\/posts\/657\/revisions\/668"}],"wp:attachment":[{"href":"https:\/\/tbekk.com\/devstream\/wp-json\/wp\/v2\/media?parent=657"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tbekk.com\/devstream\/wp-json\/wp\/v2\/categories?post=657"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tbekk.com\/devstream\/wp-json\/wp\/v2\/tags?post=657"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}