python 中使用breast_cancer数据画图

导入数据
import pandas as pd
import warnings
warnings.filterwarnings("ignore")

data = pd.read_csv('../data_sample/breast_cancer/breast_cancer-final.csv')
data=data.drop(columns = ["id", "Unnamed: 32"])
data.loc[data['diagnosis']=='M','diagnosis']=0
data.loc[data['diagnosis']=='B','diagnosis']=1
data['diagnosis'].value_counts()

X = data.iloc[:,1:]
Y = data['diagnosis']

# 降维数据拼接在后面
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
pca.fit(X)
data1=pca.fit_transform(X)
data1 = pd.DataFrame(data1)
data1.head()

data1 = (data1-data1.min())/(data1.max()-data1.min())
data1.columns=["feature1", "feature2"]
data1.head()

# 数据切分
from sklearn.model_selection import train_test_split
train_x,test_x,train_y,test_y,plot_x,plot_y = train_test_split(X,Y,data1,test_size=0.2)
观察数据
归一化之后画图
### Random Forest Classifier    
from sklearn.ensemble import RandomForestClassifier
 
clf = RandomForestClassifier(n_estimators=8)
clf.fit(train_x, train_y)
pred_y=clf.predict(test_x)  
score=clf.score(test_x,test_y)
print(str(score)[:5])
0.964
准备画图train_x,test_x,train_y,test_y,plot_x,plot_y,pred_y
import numpy as np
import matplotlib.pyplot as plt
 
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
#matplotlib画图中中文显示会有问题,需要这两行设置默认字体
%matplotlib inline
# train_y plot_x 拼接
data2=pd.concat([train_y, plot_x],axis=1)
data2.head()

在这里插入图片描述

test_y, plot_y, pred_y 拼接
pred_y=pd.DataFrame(pred_y)
test_y=np.array(test_y)
test_y=pd.DataFrame(test_y)
plot_y=np.array(plot_y)
plot_y=pd.DataFrame(plot_y)
data3=pd.concat([plot_y, test_y, pred_y],axis=1)
data3.columns=["feature1", "feature2", "diagnosis", "pred"]
data3.head()

在这里插入图片描述

plt.figure(figsize=(10,8))
plt.xlabel(u'feature1') # x轴标签
plt.ylabel(u'feature1')
plt.title(u'breast_plot')  # 图的名称
for i in range(2):
    df1=data2.loc[data2['diagnosis']==i]
    feature1=df1.loc[:, ['feature1']]
    feature2=df1.loc[:, ['feature2']]
    plt.scatter(feature1, feature2, alpha=0.5)
    
for i in range(2):
    df1=data3.loc[data3['diagnosis']!=data3['pred']]
    feature1=df1.loc[:, ['feature1']]
    feature2=df1.loc[:, ['feature2']]
    plt.scatter(feature1, feature2)
#plt.savefig("./iris.png")
# 展示图片 *必加

plt.show()

在这里插入图片描述

数据归一化,打算两两画图
X1 = (X-X.min())/(X.max()-X.min())
二维图
import numpy as np
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
 
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
#matplotlib画图中中文显示会有问题,需要这两行设置默认字体
pca = PCA(n_components=2)
pca.fit(X)
print("explained_variance_ratio_", pca.explained_variance_ratio_)
print("singular_values_", pca.singular_values_)

输出

explained_variance_ratio_ [0.98204467 0.01617649]
singular_values_ [15876.66588813  2037.67927678]
from sklearn.manifold import TSNE

tsne=TSNE()
tsne.fit_transform(X)  #进行数据降维,降成两维
data1=pd.DataFrame(tsne.embedding_,index=X.index) #转换数据格式
data2 = (data1-data1.min())/(data1.max()-data1.min())
data2['label']=Y
data2.columns=["feature1", "feature2", 'label']
data2.head()

%matplotlib inline
plt.xlabel(u'feature1') # x轴标签
plt.ylabel(u'feature1')
plt.title(u'breast_plot')  # 图的名称
for i in range(2):
    df1=data2.loc[data2['label']==i]
    feature1=df1.loc[:, ['feature1']]
    feature2=df1.loc[:, ['feature2']]
    plt.scatter(feature1, feature2)
#plt.savefig("./iris.png")
# 展示图片 *必加
plt.show()

在这里插入图片描述

data1=pca.fit_transform(X)
data1 = pd.DataFrame(data1)
data2 = (data1-data1.min())/(data1.max()-data1.min())
data2['label']=Y
data2.columns=["feature1", "feature2", 'label']
data2.head()
%matplotlib inline
plt.xlabel(u'feature1') # x轴标签
plt.ylabel(u'feature1')
plt.title(u'breast_plot')  # 图的名称
for i in range(2):
    df1=data2.loc[data2['label']==i]
    feature1=df1.loc[:, ['feature1']]
    feature2=df1.loc[:, ['feature2']]
    plt.scatter(feature1, feature2)
#plt.savefig("./iris.png")
# 展示图片 *必加
plt.show()

在这里插入图片描述

三维图

from sklearn.manifold import TSNE

tsne=TSNE(n_components=3)
tsne.fit_transform(X)  #进行数据降维,降成两维
data1=pd.DataFrame(tsne.embedding_,index=X.index) #转换数据格式

data1 = pd.DataFrame(data1)
data2 = (data1-data1.min())/(data1.max()-data1.min())
data2['label']=Y
data2.columns=["feature1", "feature2", "feature3", 'label']
# data2.head()
#绘制三维图
%matplotlib notebook

import matplotlib.pyplot as plt
import numpy as np

from mpl_toolkits.mplot3d import Axes3D
figure = plt.figure()

ax = Axes3D(figure)

for i in range(3):
    df1=data2.loc[data2['label']==i]
    feature1=df1.loc[:, ['feature1']]
    feature2=df1.loc[:, ['feature2']]
    feature3=df1.loc[:, ['feature3']]
    ax.scatter3D(feature1, feature2, feature3, cmap='Greens') 
    
plt.show()

在这里插入图片描述

pca = PCA(n_components=3)
pca.fit(X)
print("explained_variance_ratio_", pca.explained_variance_ratio_)
print("singular_values_", pca.singular_values_)

data1=pca.fit_transform(X)
data1 = pd.DataFrame(data1)
data2 = (data1-data1.min())/(data1.max()-data1.min())
data2['label']=Y
data2.columns=["feature1", "feature2", "feature3", 'label']
# data2.head()
#绘制三维图
%matplotlib notebook

import matplotlib.pyplot as plt
import numpy as np

from mpl_toolkits.mplot3d import Axes3D
figure = plt.figure()

ax = Axes3D(figure)

for i in range(2):
    df1=data2.loc[data2['label']==i]
    feature1=df1.loc[:, ['feature1']]
    feature2=df1.loc[:, ['feature2']]
    feature3=df1.loc[:, ['feature3']]
    ax.scatter3D(feature1, feature2, feature3, cmap='Greens') 
    
plt.show()

在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值