简单的实现下:用一个神经网络分类器,对测井数据进行岩性分类。我们有很多种形式的数据,现实中纯数字或文本的数据比较多。本测井数据由university of Kansas 的Hugoton and Panoma 的gasfield 提供。数据下载地址为:http://www.people.ku.edu/~gbohling/EECS833/
该数据在6 月18日,2018 有过更新。本数据最初用来在SKlearn 的环境里,通过SVM 支持向量机做过详细的研究报告。可以作为一个tutorial 来看。论文发表于2016 年10 月份。论文名称为Facies classification using machine learning. 但是SVM 并不是神经网络,而且SVM 有个很明显的问题,就是瘸子里拔将军。理论上,无论多么没有规律和特征的数据,都是可以训练到100% 正确。
了解此次用到的测井数据的岩性分类情况:
这里忽略后面的adjacent facies 分类,一共有9 种岩性分类。开始读取数据:
%matplotlib inline
import tensorflow as tf
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pandas import set_option
set_option("display.max_rows", 10)
filename = 'facies_vectors.csv'
train_data = pd.read_csv(filename)
train_data
test_data = train_data[train_data['Well Name'] == 'SHANKLE']
train_data = train_data[train_data['Well Name'] != 'SHANKLE']
test_data.describe()
train_data['Well Name'] = train_data['Well Name'].astype('category')
train_data['Formation'] = train_data['Formation'].astype('category')
train_data['Well Name'].unique()
可以查看数据的类型。
facies_labels = ['SS', 'CSiS', 'FSiS', 'SiSh', 'MS',
'WS', 'D','PS', 'BS']
def label_facies(row, labels):
return labels[ row['Facies'] -1]
training_data.loc[:,'FaciesLabels'] = training_data.apply(lambda row: label_facies(row, facies_labels), axis=1)
facies_train_data.describe()
从上面我们可以看到因为数据量不统一,其中PE 只有2783 个有效值,而其他的都是3700,因为神经网络训练的时候要求数据必须是同维度的,所以我们下面把数据的维度统一成2783。
PE_val = train_data['PE'].notna().values
train_data = train_data[PE_val]
train_data.describe()
下面显示已经将数据的维度统一了。
facies_counts = train_data['Facies'].value_counts().sort_index()
facies_counts.index = facies_labels
这里我们可以发现数据有imbalance 的情况,就是每个样本数数量相差比较大,这个目前先没有考虑。作为后期的提高处理。
train_data = train_data.drop(['Formation', 'Well Name', 'Depth', 'Facies', 'NM_M', 'RELPOS'],
axis = 1)
test_data = test_data.drop(['Formation', 'Well Name', 'Depth', 'Facies', 'NM_M', 'RELPOS'],
axis = 1)
train_data
test_data
def convert2onehot(data):
return pd.get_dummies(data)
new_train_data = convert2onehot(train_data)
new_train_data
有点困…意识有点模糊。下章接着记录。
------未完待续------
欢迎大家订阅我的微信公众号,您的关注将是我创作的源泉和动力:
-------我是分割线------------
This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.