data-mining binning

python
Published

October 22, 2022

import numpy as np
import math
from sklearn.datasets import load_iris
from sklearn import datasets, linear_model, metrics
import numpy as np
import pandas as pd
datasets = np.array([13, 15, 16, 16, 19, 20, 20, 21, 22, 22, 25, 25, 25,
        25, 30, 33, 33, 35, 35, 35, 35, 36, 40, 45, 46, 52, 70])
a = datasets
b = np.zeros(len(a))
a[1]
15
for i in range(len(a)):
    b[i]=a[i]
print(b)
[13. 15. 16. 16. 19. 20. 20. 21. 22. 22. 25. 25. 25. 25. 30. 33. 33. 35.
 35. 35. 35. 36. 40. 45. 46. 52. 70.]
b = np.sort(b)
b
array([13., 15., 16., 16., 19., 20., 20., 21., 22., 22., 25., 25., 25.,
       25., 30., 33., 33., 35., 35., 35., 35., 36., 40., 45., 46., 52.,
       70.])
lens = len(a)
lens
27
lens/3
9.0
bin1 = np.zeros((9,3))
bin2 = np.zeros((9, 3))
bin3 = np.zeros((9, 3))
for i in range (0,len(a),3):
    k=int(i/3)
    mean=(b[i] + b[i+1] + b[i+2])/3
    for j in range(3):
        bin1[k,j]=mean
print("Bin Mean: \n",bin1)
Bin Mean: 
 [[14.66666667 14.66666667 14.66666667]
 [18.33333333 18.33333333 18.33333333]
 [21.         21.         21.        ]
 [24.         24.         24.        ]
 [26.66666667 26.66666667 26.66666667]
 [33.66666667 33.66666667 33.66666667]
 [35.         35.         35.        ]
 [40.33333333 40.33333333 40.33333333]
 [56.         56.         56.        ]]
import matplotlib.pyplot as plt
import statsmodels.api as sm
y = np.array(range(1,28,1))
z1 = np.polyfit(b,y,3)
print(z1)
[-1.70252488e-05 -9.51573032e-03  1.36135068e+00 -1.59664180e+01]
p1 = np.poly1d(z1)  # 返回值为多项式的表达式,也就是函数式子
print(p1)
y_pred = p1(b)
            3            2
-1.703e-05 x - 0.009516 x + 1.361 x - 15.97
plt.plot(b,y)

plot1 = plt.plot(b, y, '*', label='original values')
plot2 = plt.plot(b, y_pred, 'r', label='fit values')

本篇所应用的一些python的绘图方法 https://zhuanlan.zhihu.com/p/122702657

import pandas as pd
import numpy as np
import seaborn as sbn
sbn.boxplot(b)
<AxesSubplot: >