导入
什么是机器学习?
了解机器学习的基本概念、流程及其不同类型。
...
典型的机器学习流程
...
监督学习示意图
1from sklearn.linear_model import LogisticRegression 2from sklearn.model_selection import train_test_split 3import pandas as pd 4import matplotlib.pyplot as plt 5# 加载缺陷数据 #流程的第01步 6data = pd.DataFrame([[1000,5,2,1,0],[2000,7,5,2,1],[3000,4,10,4,0],[1000,8,1,1,0],[4000,6,5,5,1],[2000,9,3,3,1], 7[5000,8,8,2,0],[2000,5,1,1,0],[3000,7,2,2,1],[1000,4,5,1,0],[2000,6,4,3,1],[3000,5,3,2,1],[4000,8,6,4,0],[1000,7,1,1,1],[5000,5,8,2,0],[2000,9,2,3,1],[3000,7,3,3,1],[1000,6,1,1,0],[4000,5,5,4,0],[2000,8,2,2,1],[3000,7,4,2,1],[1000,6,1,1,0],[2000,5,3,1,1],[3000,8,2,2,1],[4000,7,4,3,1],[1000,6,1,1,0],[2000,5,3,1,1],[3000,8,2,2,1],[4000,7,4,3,1]],columns=['lines_of_code','complexity','age_of_code','number_of_authors','has_bug']) 8# 将数据划分为特征和标签 9X = data[["lines_of_code", "complexity", "age_of_code", "number_of_authors"]] 10y = data["has_bug"] 11 12# 将数据划分为训练集和测试集 13X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) 14 15# 创建并训练模型 16model = LogisticRegression()#流程的第02步 17model.fit(X_train, y_train)#流程的第03步 18 19# 使用模型对测试集进行预测 20y_pred = model.predict(X_test) 21 22# 评估模型 #流程的第04步 23from sklearn.metrics import accuracy_score, precision_score, recall_score 24print("准确率: ", accuracy_score(y_test, y_pred)) 25print("精确率: ", precision_score(y_test, y_pred)) 26print("召回率: ", recall_score(y_test, y_pred))
...
无监督学习示意图
1import pandas as pd 2from sklearn.cluster import KMeans 3import matplotlib.pyplot as plt 4from mpl_toolkits.mplot3d import Axes3D 5 6# 加载源代码数据 7data = pd.DataFrame([['Func_1',100,5,2],['Func_2',200,8,4],['Func_3',300,6,5],['Func_4',150,9,3],['Func_5',250,7,6],['Func_6',350,5,8],['Func_7',200,9,1],['Func_8',300,8,2],['Func_9',250,7,3],['Func_10',400,6,5],['Func_11',150,8,1],['Func_12',200,7,2],['Func_13',250,9,3],['Func_14',300,8,4],['Func_15',200,6,2],['Func_16',150,9,1],['Func_17',250,7,3],['Func_18',350,8,5],['Func_19',200,6,2],['Func_20',300,7,4]],columns=['Function_Name','lines_of_code','complexity','age_of_code']) 8 9# 提取特征 10X = data[["lines_of_code", "complexity", "age_of_code"]] 11 12# 创建并训练K-Means模型 13model = KMeans(n_clusters=3) 14model.fit(X) 15 16# 使用模型预测每个函数所属的簇 17y_pred = model.predict(X) 18 19# 在三维空间中绘制函数分布 20fig = plt.figure(figsize=(8, 6)) 21ax = fig.add_subplot(111, projection='3d') 22ax.scatter(X["lines_of_code"], X["complexity"], X["age_of_code"], c=y_pred) 23ax.set_xlabel("代码行数") 24ax.set_ylabel("复杂度") 25ax.set_zlabel("代码年龄") 26plt.show() 27plt.savefig('output/3dplot.png')