# coding: utf-8

# In[1]:

import pandas as pd
import numpy as np
from sklearn import tree
from sklearn.svm import SVC
from sklearn.grid_search import GridSearchCV
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report, confusion_matrix
from sklearn.preprocessing import binarize
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import Normalizer
from sklearn.metrics import f1_score
from sklearn.metrics import accuracy_score,recall_score,average_precision_score,auc

import pandas as pd
import numpy as np
from sklearn import tree
from sklearn.svm import SVC
from sklearn.grid_search import GridSearchCV
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report, confusion_matrix
from sklearn.preprocessing import binarize
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import Normalizer
from sklearn.metrics import f1_score
from sklearn.metrics import accuracy_score,recall_score,average_precision_score,auc

# In[137]:

from imblearn.over_sampling import SMOTE
data = pd.read_csv(r"D:\Users\sgg91044\Desktop\model_data_1.csv")

# In[138]:

data.head()

# In[50]:

data= data.drop(columns=['Stg','RNK','parametername','ooc','oos'])
p= pd.pivot_table(data, index=['eqpid','Chamber','lotid','slotid','stage','Recipie_Name','finishtime'],values='data1', columns='Param_Name', aggfunc=np.sum)

# In[54]:

p
p.to_csv(r'D:\Users\sgg91044\Desktop\more_parameter\more_parameter_pivot.csv', index=True, header=True)

# In[236]:

p.drop(columns=["waferid","defect_count"],inplace=True)

# In[237]:

data.head()

# In[184]:

data = pd.read_csv(r"D:\Users\sgg91044\Desktop/MEP_data_pivot.csv")

# In[6]:

data.iloc[:,0:17] = data.iloc[:,0:17].apply(pd.to_numeric,errors='coerce')

# In[239]:

for i in range(0,18):
med = np.median(data.iloc[:,i][data.iloc[:,i].isna() == False])
data.iloc[:,i] = data.iloc[:,i].fillna(med)

# In[139]:

data.Target = data.Target.astype("category")

# In[140]:

Y = data.Target
X = data.drop(columns='Target')

# In[195]:

ohe = OneHotEncoder()
le = LabelEncoder()

# In[246]:

X=X.drop(columns=['eqpid','lotid','Chamber','Recipie_Name'])
X
for i in range(0,18):
med = np.median(data.iloc[:,i][data.iloc[:,i].isna() == False])
data.iloc[:,i] = data.iloc[:,i].fillna(med)

# In[243]:

X["eqp_encoded"] = le.fit_transform(X.iloc[:,0])
X["chmbr_encoded"] = le.fit_transform(X.iloc[:,1])
X.drop(columns=['Step'],inplace=True)
X['recipe_encoded'] = le.fit_transform(X.iloc[:,2])

# In[135]:

X_eqp = ohe.fit_transform(X.eqp_encoded.values.reshape(-1,1)).toarray()
X_chamber = ohe.fit_transform(X.chmbr_encoded.values.reshape(-1,1)).toarray()
X_recipie = ohe.fit_transform(X.recipe_encoded.values.reshape(-1,1)).toarray()

dfOneHot = pd.DataFrame(X_eqp, columns = ["Eqp_"+str(int(i)) for i in range(X_eqp.shape[1])])
X = pd.concat([X, dfOneHot], axis=1)

dfOneHot = pd.DataFrame(X_chamber, columns = ["Chamber_"+str(int(i)) for i in range(X_chamber.shape[1])])
X = pd.concat([X, dfOneHot], axis=1)

dfOneHot = pd.DataFrame(X_recipie, columns = ["Recipie_"+str(int(i)) for i in range(X_recipie.shape[1])])
X = pd.concat([X, dfOneHot], axis=1)

# In[136]:

Trace_back = pd.concat([X[["eqpid","Chamber","Recipie_Name"]],X[["eqp_encoded","chmbr_encoded","recipe_encoded"]]],axis=1)

# In[137]:

X.drop(columns=list(Trace_back.columns),inplace=True)

# In[197]:

nz = Normalizer()
X.iloc[:,0:19]=pd.DataFrame(nz.fit_transform(X.iloc[:,0:19]),columns=X.iloc[:,0:19].columns)

# In[150]:

data.Target = data.Target.astype("category")
Y = data.Target
X = data.drop(columns='Target')

# In[124]:

sm = SMOTE(random_state=12, ratio = 1.0)
X_smote, Y_smote = sm.fit_sample(X, Y)

# In[237]:

data=pd.read_csv(r"D:\Users\sgg91044\Desktop\model_data_1.csv")

# In[238]:

data.eqpid = data.eqpid.astype("category")
data.chamber = data.chamber.astype("category")
data.wafer = data.wafer.astype("category")

# In[239]:

data.Target = data.Target.astype("category")
Y = data.Target
X = data.drop(columns='Target')

# In[240]:

X_train, X_test, y_train, y_test = train_test_split(
X, Y, test_size=0.2, random_state=8)

# In[241]:

sm = SMOTE(random_state=12, ratio = 1.0)
x_train_smote, y_train_smote = sm.fit_sample(X_train, y_train)

# In[242]:

print(y_train.value_counts(), np.bincount(y_train))

# In[243]:

from sklearn.ensemble import RandomForestClassifier

# Make the random forest classifier
random_forest = RandomForestClassifier(n_estimators = 100, random_state = 50, oob_score = True, verbose = 1, n_jobs = -1)

# In[244]:

# Train on the training data
random_forest.fit(x_train_smote,y_train_smote)

# In[245]:

# Make predictions on the test data
y_pred = random_forest.predict(X_test)

# In[246]:

print(classification_report(y_pred=y_pred,y_true=y_test))

# In[247]:

print(confusion_matrix(y_pred=y_pred,y_true=y_test))

# In[235]:

from sklearn.externals import joblib

# Save to file in the current working directory
joblib_file = "model_RF.pkl"
joblib.dump(random_forest, joblib_file)

# In[229]:

X_Nov=pd.read_csv(r'D:\Users\sgg91044\Desktop\sep_oct_data\Nov_good_imputed.csv')
Y_Nov=pd.read_csv(r'D:\Users\sgg91044\Desktop\sep_oct_data\Y_Nov.csv')

# In[230]:

def encode_eqpid(eqpid):
return int(eqpid[-2:])-1

def encode_chamber(chamber):
if chamber == 'A':
return 0
else:
return 1

def encode_wafer(wafer):
if wafer > 0:
return wafer-1
data=pd.read_csv(r"D:\Users\sgg91044\Desktop\normalizing_example.csv")
nz = Normalizer()
data.iloc[:,8:10]=pd.DataFrame(nz.fit_transform(data.iloc[:,8:10]),columns=data.iloc[:,8:10].columns)
data.iloc[:,0:3]=pd.DataFrame(nz.fit_transform(data.iloc[:,0:3]),columns=data.iloc[:,0:3].columns)

# In[231]:

X_Nov.eqpid = X_Nov.eqpid.apply(encode_eqpid)
X_Nov.chamber = X_Nov.chamber.apply(encode_chamber)
X_Nov.wafer = X_Nov.wafer.apply(encode_wafer)
X_Nov.eqpid = X_Nov.eqpid.astype("category")
X_Nov.chamber = X_Nov.chamber.astype("category")
X_Nov.wafer = X_Nov.wafer.astype("category")
X_Nov.iloc[:,11:13]=nz.transform(X_Nov.iloc[:,11:13])
X_Nov.iloc[:,3:6]=nz.transform(X_Nov.iloc[:,3:6])
#SUM_ETCM
X_Nov["SUM_ETCM"]=np.array(X_Nov.ETCM_PHA4)+np.array(X_Nov.ETCM_PHB4)+np.array(X_Nov.ETCM_PHC4)

# In[232]:

X_Nov=X_Nov.drop(columns="Target")

# In[233]:

# Make predictions on the test data
y_pred = random_forest.predict(X_Nov)

# In[234]:

print(classification_report(y_pred=y_pred,y_true=Y_Nov))

# In[129]:

print("Accuracy of Random_forest:",round(accuracy_score(y_pred=y_pred,y_true=y_test) * 100,2),"%")

# In[130]:

print("Sensitivity of Random_forest:",round(recall_score(y_pred=y_pred,y_true=y_test)*100,2),"%")

# In[18]:

from sklearn.externals import joblib

joblib.dump(random_forest, r'D:\Users\sgg91044\Desktop\deployment\model_RF.pkl')

# In[217]:

tuned_parameters = [{'kernel': ['rbf'], 'gamma': [1e-3, 1e-4],
'C': [1, 10, 100, 1000]},
{'kernel': ['linear'], 'C': [1, 10, 100, 1000]},
{'kernel':['poly'],'degree':[2,3,5]}]
clf = GridSearchCV(SVC(),param_grid=tuned_parameters,cv=3,scoring='recall',verbose=True)
clf.fit(x_train_smote,y_train_smote)

# In[218]:

[clf.best_estimator_.kernel,clf.best_estimator_.C,clf.best_estimator_.gamma]
y_pred = clf.predict(X_test)

# In[219]:

print(classification_report(y_pred=y_pred,y_true=y_test))

# In[165]:

df=pd.DataFrame(y_pred)
df.to_csv(r'D:\Users\sgg91044\Desktop\df_pred.csv', index=True, header=True)

# In[223]:

from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression(random_state = 0)
classifier.fit(X_train,y_train)

# In[224]:

y_test_pred=classifier.predict(X_test)

# In[225]:

print(classification_report(y_pred=y_test_pred,y_true=y_test))

# In[120]:

f1_score(y_pred=y_pred,y_true=y_test)

# In[121]:

print("Accuracy of Random_forest:",round(accuracy_score(y_pred=y_pred,y_true=y_test) * 100,2),"%")

# In[122]:

print("Sensitivity of Random_forest:",round(recall_score(y_pred=y_pred,y_true=y_test)*100,2),"%")

# In[30]:

X_train, X_test, y_train, y_test = train_test_split(
X, Y, test_size=0.3, random_state=0)

# In[31]:

sm = SMOTE(random_state=12, ratio = 1.0)
x_train_smote, y_train_smote = sm.fit_sample(X_train, y_train)

# In[32]:

print(y_train.value_counts(), np.bincount(y_train_smote))

# In[86]:

from sklearn.ensemble import RandomForestClassifier

# Make the random forest classifier
random_forest = RandomForestClassifier(n_estimators = 100, random_state = 50, verbose = 1, n_jobs = -1)

# In[89]:

# Train on the training data
random_forest.fit(x_train_smote,y_train_smote)

# In[90]:

# Make predictions on the test data
y_pred = random_forest.predict(X_test)

# In[91]:

print(classification_report(y_pred=y_pred,y_true=y_test))

# In[92]:

print(confusion_matrix(y_pred=y_pred,y_true=y_test))

# In[93]:

f1_score(y_pred=y_pred,y_true=y_test)

# In[220]:

print("Accuracy of Random_forest:",round(accuracy_score(y_pred=y_pred,y_true=y_test) * 100,2),"%")

# In[221]:

print("Sensitivity of Random_forest:",round(recall_score(y_pred=y_pred,y_true=y_test)*100,2),"%")

# In[96]:

y_pred_rf = random_forest.predict_proba(X_test)
y_pred_rf

# In[99]:

# The random forest model by itself
y_pred_rf = random_forest.predict_proba(X_test)[:, 1]
fpr_rf, tpr_rf, _ = roc_curve(y_test, y_pred_rf)

# In[83]:

import matplotlib.pyplot as plt
plt.figure(1)
plt.plot([0, 1], [0, 1], 'k--')
plt.plot(fpr_rf, tpr_rf, label='RF')
plt.xlabel('False positive rate')
plt.ylabel('True positive rate')
plt.title('ROC curve')
plt.legend(loc='best')
plt.show()
# Compute micro-average ROC curve and ROC area
fpr["micro"], tpr["micro"], _ = roc_curve(y_test.ravel(), y_pred_rf.ravel())
roc_auc["micro"] = auc(fpr["micro"], tpr["micro"])
print ("AUC of Random_forest:", roc_auc["micro"])

我的代码-random forest的更多相关文章

  1. 多分类问题中,实现不同分类区域颜色填充的MATLAB代码(demo:Random Forest)

    之前建立了一个SVM-based Ordinal regression模型,一种特殊的多分类模型,就想通过可视化的方式展示模型分类的效果,对各个分类区域用不同颜色表示.可是,也看了很多代码,但基本都是 ...

  2. [Machine Learning & Algorithm] 随机森林(Random Forest)

    1 什么是随机森林? 作为新兴起的.高度灵活的一种机器学习算法,随机森林(Random Forest,简称RF)拥有广泛的应用前景,从市场营销到医疗保健保险,既可以用来做市场营销模拟的建模,统计客户来 ...

  3. paper 56 :机器学习中的算法:决策树模型组合之随机森林(Random Forest)

    周五的组会如约而至,讨论了一个比较感兴趣的话题,就是使用SVM和随机森林来训练图像,这样的目的就是 在图像特征之间建立内在的联系,这个model的训练,着实需要好好的研究一下,下面是我们需要准备的入门 ...

  4. sklearn_随机森林random forest原理_乳腺癌分类器建模(推荐AAA)

     sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...

  5. 随机森林(Random Forest)

    阅读目录 1 什么是随机森林? 2 随机森林的特点 3 随机森林的相关基础知识 4 随机森林的生成 5 袋外错误率(oob error) 6 随机森林工作原理解释的一个简单例子 7 随机森林的Pyth ...

  6. 随机森林(Random Forest),决策树,bagging, boosting(Adaptive Boosting,GBDT)

    http://www.cnblogs.com/maybe2030/p/4585705.html 阅读目录 1 什么是随机森林? 2 随机森林的特点 3 随机森林的相关基础知识 4 随机森林的生成 5 ...

  7. [ML学习笔记] 决策树与随机森林(Decision Tree&Random Forest)

    [ML学习笔记] 决策树与随机森林(Decision Tree&Random Forest) 决策树 决策树算法以树状结构表示数据分类的结果.每个决策点实现一个具有离散输出的测试函数,记为分支 ...

  8. [Machine Learning & Algorithm] 随机森林(Random Forest)-转载

    作者:Poll的笔记 博客出处:http://www.cnblogs.com/maybe2030/  阅读目录 1 什么是随机森林? 2 随机森林的特点 3 随机森林的相关基础知识 4 随机森林的生成 ...

  9. ML(4.3): R Random Forest

    随机森林模型是一种数据挖掘模型,常用于进行分类预测.随机森林模型包含多个树形分类器,预测结果由多个分类器投票得出. 决策树相当于一个大师,通过自己在数据集中学到的知识对于新的数据进行分类.俗话说得好, ...

随机推荐

  1. eclipse光标变粗解决方法

    如上图,光标变成黑块好像没那么顺眼,原因是我们不小心按到了insert键造成的,再按一下insert键就OK了,如果delete和insert是一个键那么就用FN键+delete/insert键就可以 ...

  2. Python_Mix*内置函数

    数学运算(7个) abs()求数值的绝对值 divmod()返回两个数值的商和余数 max()返回可迭代对象中的元素中的最大值或者所有参数的最大值 min()返回可迭代对象中的元素中的最小值或者所有参 ...

  3. Mac中java实现自动打开软件问题

    Runtime.getRuntime().exec("/Applications/NetEaseMusic.app/Contents/MacOS/NetEaseMusic");遗留 ...

  4. javeEE第五周

    一.定义 AndXML”(异步Javascript和XML),是指一种创建交互式网页应用的网页开发技术.AJAX = 异步JavaScript和XML(通用标记语言的子集),是一种用于创建快速动态网页 ...

  5. 团队服务器搭建(搭建php环境和安装在线mysql管理工具phpmyadmin)

    1.本人良心推荐阿里云,因为他对学生来说优惠很多,比如说9.9/月的云主机,所以这里演示阿里云ubuntu系统,系统可以自己安装的 2.来到阿里云官网https://www.aliyun.com,免费 ...

  6. 为django项目配置celery的后台启动

    为root用户启动celery创建的脚本,该脚本的拥有者与使用者都必须是root .使用方法为 /etc/init.d/celeryd [start]|[stop]|[kill] 需增加两个文件 /e ...

  7. shell脚本中给字符串添加颜色

    shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数-e 格式如下: echo -e "\033[字背景颜色:文字颜色m字符串\033[0m" 例如: ec ...

  8. 浅析构造函数,及public、private、protected、final、this、super关键字

    初学JAVA,感觉很多知识点不熟悉,看了好多遍教材,最终还是决定把它写下来,加深印象以便忘了的时候再过来复习一下.看上去字数可能比较多,其实内容很简明. 首先看this的用法: package tes ...

  9. ESP32搭建2.虚拟机与物理机实现文件传输

    为后期操作方便,搭建实现虚拟机和物理机的文件直传. 1.     将安装好的虚拟机打开,点击VMware的虚拟机标签中的更新VMware Tools,等待一小会,虚拟CD盘中弹出文件 2.将压缩包Co ...

  10. ubuntu安装后问题

    ubuntu安装后桌面显示不正常,出现闪屏,或者是缺图标的问题多数是ubuntu的3D加速显示问题 解决方法,vmware workstations 中的菜单栏:虚拟机->设置->显示器- ...