數據分析可以幫助我們從數據中獲取有用的信息,並為我們的查詢提供解決方案。此外,基於觀察到的模式,我們可以預測不同商業政策的結果。
了解數據分析的基礎
數據
我們在分析過程中處理的數據類型主要是 csv(逗號分隔值)格式。通常,csv 文件中的第一行表示為標題。
可用包
Python 包中有各種各樣的庫,可以在不編寫長代碼的情況下輕鬆實現。
一些包的例子是-
- 科學計算庫,如 NumPy、Pandas & SciPy。
- 可視化庫,如 Matplotlib 和 seaborn。
- 算法庫,如 scikit-learn 和 statsmodels。
導入和導出數據集
導入數據集時,我們必須注意的兩個基本事項是-
- 格式- 指的是文件的編碼方式。突出格式的例子有。csv,。xlsx,。json 等。
- 文件路徑- 文件的路徑是指文件存放的位置。它可以在任何驅動器或一些在線源中提供。
可以通過以下方式完成-
示例-
import pandas as pd
path=" "
df = pd.read_csv(path)
如果數據集不包含標題,我們可以通過以下方式指定它-
df = pd.read_csv(path,header=None)
為了查看數據集的前五行和後五行,我們可以分別使用 df.head()和 df.tail()。
讓我們看看如何導出數據,如果我們在。csv 格式,然後
path = " "
df.to_excel(path)
數據爭論
數據爭論是將數據從原始格式轉換為可用於分析的格式的過程
讓我們看看這部分包含了什麼-
如何處理缺失值?
缺少值-由於信息不可用,一些條目留空。它通常用 NaN、?或者 0。
讓我們討論一下如何處理它們-
最好的選擇是用平均值替換數值變量,用模式替換分類變量。
有時可能會出現這樣的情況,當我們不得不丟棄丟失的值時,可以使用-
df.dropna()
如果我們想刪除一行,我們必須將軸指定為 0。如果我們想刪除一列,我們必須指定軸為 1。
此外,如果我們希望這些變化直接發生在數據集中,我們將在 place = True 中再指定一個參數。
現在讓我們看看如何替換這些值-
語法是-
df.replace(missing value, new value)
在這裡,我們將創建一個變量,並在其中存儲屬性的平均值(我們想要替換它的值)
mean=df["attribute name"].mean()
df["attribute name"].replace(np.nan,mean)
如何進行數據格式化?
它指的是以可理解的格式提供數據的過程。例如-更改變量名使其易於理解。
數據標準化
數據集中存在的要素的值可能會導致有偏差的預測。因此,我們必須把它們帶到一個可以比較的範圍。
為了做到這一點,我們可以在屬性上使用以下技術-
- 簡單功能擴展 Xn=Xold/Xmax
- 最小-最大方法 Xn=Xold-Xmin/Xmax-Xmin
- z-score xn = xold-/ꝺ
-平均值
ꝺ-standard 偏差
如何將分類變量轉換成數值變量?
在這種情況下,我們繼續進行一個稱為“一熱編碼”的過程,假設有一個屬性保存分類值。我們將根據可能性製造虛擬變量,並根據它們在屬性中的出現情況為它們分配 0 或 1。
要將分類變量轉換為虛擬變量 0 或 1,我們將使用
pandas.get_dummies(df["attribute-name"])
This will generate the expected results.
python 中的綁定
它指的是將數值變量轉換為分類變量的過程。
假設我們從數據集中獲取了屬性“價格”。我們可以根據範圍將它的數據分為三類,然後用低價、中價、高價等名稱來表示。
我們可以使用 linspace() 方法獲得範圍
bin = np.linspace(min(df["attribute-name"]),max(df["attribute-name"]),4)
cat_names=["low-price","mid-price","high-price"]
df["bin_name"]=pd.cut(df["attribute-name"],bin,labels=cat_names)
探索性數據分析
統計數字
我們可以使用description()方法找出我們數據集的統計概要。可用作df . description()。分類變量可以使用值 _counts() 方法進行總結。
使用 GroupBy
Pandas 的 groupby()方法可以應用於分類變量。它根據不同的類別對子集進行分組。它可以包含單個或多個變量。
讓我們看一個例子,它將幫助我們理解如何在 Python 中使用它。
df_att=df[['attribute1', 'attribute2', 'attribute3']]
df_g=df_att.groupby(['attribute1', 'attribute2'], as_index=False).mean()
df_g
相互關係
相關性衡量兩個變量相互依賴的範圍。
檢查兩個變量之間存在何種相關性的直觀想法。我們可以繪製一個圖表,並解釋一個屬性的值的增加如何影響另一個屬性。
關於統計量,我們可以使用皮爾遜相關來獲得相關性。它給出了相關係數和 P 值。
讓我們看看標準-
| 相關係數 | 關係 |
| 1.接近+1 | 大正 |
| 2.接近-1 | 大底片 |
| 3.接近 0 | 不存在任何關係 |
| p 值 | 確定性 |
| p 值< 0.001 | 強烈的 |
| p 值< 0.05 | 溫和的 |
| p 值< 0.1 | 無力的 |
| p 值> 0.1 | 不 |
我們可以在使用 scipy stat 包的代碼中使用它。
假設我們想要計算兩個屬性之間的相關性,屬性 1 和屬性 2-
pearson_coef,p_value=stats.pearsonr(df["attribute1"],df["attribute2"]).
為了進一步檢查所有變量之間的相關性,我們可以創建一個熱圖。
兩個分類變量之間的關係
兩個分類變量之間的關係可以用卡方方法計算。
scipy.stats.chi2_contingency(cont_table, correction=True)
如何開發模型?
首先,讓我們了解什麼是模型?
模型可以指幫助我們預測結果的方程。
- 線性回歸和多元線性回歸
線性回歸- 顧名思義,只涉及單個自變量進行預測。
多元回歸- 涉及多個自變量進行預測。
簡單的線性回歸方程可以表示為-
y=b 0 x+b 1
在這裡,
y 因變量
x 獨立變量
b0-坡度
b1-攔截
用 Python 實現線性回歸
from sklearn.linear_model import LinearRegression
lm=LinearRegression()
X=df["attribute-name1"]
Y=df["attribute-name1"]
lm.fit(X,Y)
yp=lm.predict(X)
使用可視化評估我們的模型
創建情節是一個很好的實踐,因為它們顯示了相關性的強度,以及關係的方向是積極的還是消極的。
讓我們看看不同的圖,這些圖可以幫助我們評估我們的模型-
1.使用回歸圖
import seaborn as sns
sns.regplot(x="attribute1",y="attribute2",data=df)
plt.ylim(0,)
2.使用殘差圖
import seaborn as sns
sns.residplot(df["attribute1"],df["attribute2"])
在樣本評估中
在這裡,我們將討論如何對我們的模型進行數值評估,兩種方法是-
1。均方誤差
這種方法將實際值和預測值之間的差值進行平方,然後最終計算出它們的平均值。
我們可以用 Python 實現同樣的功能
from sklearn.metrics
import mean_squared_error
mean_squared_error(df['target-variable'],Y_predict_simple_fit)
2。r 平方
r 平方也稱為決定係數。它顯示了數據與擬合回歸線的接近程度。可以使用 score() 方法在 Python 中使用。
X=df["attribute-1"]
Y=df["attribute-2"]
lm.fit(X,Y)
lm.score(X,Y)
決策
簡而言之,當我們評估一個模型時,我們必須注意以下幾點
- 使用可視化
- 使用數值評估方法。
如何評價一個模型?
評估我們的模型是一個不可或缺的因素,因為它告訴我們的數據與模型的吻合程度。現在,我們將討論如何使用訓練數據來預測結果。
關鍵的想法是將我們的數據集分為訓練和測試。訓練數據集用於構建我們的模型,測試數據集用於評估我們模型的性能。
它可以用 Python 實現,使用-
from sklearn.model_selection import train_test_split
x_train,y_train,x_test,y_test=train_test_split(x_data,y_data,test_size=' ',random_state=' ')
過擬合和欠擬合
過擬合- 是模型擬合數據相當簡單的情況。
欠擬合- 是模型容易調整噪聲因子而不是函數的情況。
裡脊回歸
這是在我們處理十次變量時使用的。這裡我們引入了一個叫做α的因子。讓我們看看如何在 Python 中實現這一點。
from sklearn.linear_model import Ridge
RModel=Ridge(alpha=0.1)
RModel.fit(X,Y)
Yp=RModel.predict(X)
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/311357.html