我需要使用pca来识别具有特定数据集的最大方差的维度.我正在使用scikit-learn的pca来完成它,但是我无法从pca方法的输出中识别出具有最高方差的数据的组成部分.请记住,我不想消除这些维度,只能识别它们.
我的数据被组织为一个包含150行数据的矩阵,每行包含4个维度.我这样做:
pca = sklearn.decomposition.PCA()
pca.fit(data_matrix)
Run Code Online (Sandbox Code Playgroud)
当我打印pca.explained_variance_ratio_时,它会输出从最高到最低排序的方差比数组,但它不会告诉我它们对应的数据中的哪个维度(我已尝试更改矩阵中列的顺序,以及得到的方差比数组是相同的).
打印pca.components_给了我一个4x4矩阵(我把组件的原始数量留作 pca的参数)和一些我无法理解的含义的值...根据scikit的文档,它们应该是具有最大方差的组件(特征向量可能是?),但没有这些值所指的维度的标志.
转换数据也没有帮助,因为维度的改变方式我真的不知道它们最初是哪一个.
有什么方法可以用scikit的pca获取这些信息吗?谢谢
我需要解决前馈网络的回归问题,并且我一直在尝试使用PyBrain来完成它.由于没有关于pybrain参考的回归的例子,我试图改编它的回归分类示例,但没有成功(分类示例可以在这里找到:http://pybrain.org/docs/tutorial/fnn.html).以下是我的代码:
第一个函数将我的数据以numpy数组形式转换为pybrain SupervisedDataset.我使用SupervisedDataset,因为根据pybrain的参考,它是在问题回归时使用的数据集.参数是一个包含特征向量(数据)及其预期输出(值)的数组:
def convertDataNeuralNetwork(data, values):
fulldata = SupervisedDataSet(data.shape[1], 1)
for d, v in zip(data, values):
fulldata.addSample(d, v)
return fulldata
Run Code Online (Sandbox Code Playgroud)
接下来,是运行回归的功能.train_data和train_values是列车特征向量及其预期输出,test_data和test_values是测试特征向量及其预期输出:
regressionTrain = convertDataNeuralNetwork(train_data, train_values)
regressionTest = convertDataNeuralNetwork(test_data, test_values)
fnn = FeedForwardNetwork()
inLayer = LinearLayer(regressionTrain.indim)
hiddenLayer = LinearLayer(5)
outLayer = GaussianLayer(regressionTrain.outdim)
fnn.addInputModule(inLayer)
fnn.addModule(hiddenLayer)
fnn.addOutputModule(outLayer)
in_to_hidden = FullConnection(inLayer, hiddenLayer)
hidden_to_out = FullConnection(hiddenLayer, outLayer)
fnn.addConnection(in_to_hidden)
fnn.addConnection(hidden_to_out)
fnn.sortModules()
trainer = BackpropTrainer(fnn, dataset=regressionTrain, momentum=0.1, verbose=True, weightdecay=0.01)
for i in range(10):
trainer.trainEpochs(5)
res = trainer.testOnClassData(dataset=regressionTest )
print res
Run Code Online (Sandbox Code Playgroud)
当我打印res时,它的所有值都是0.我已经尝试使用buildNetwork函数作为构建网络的快捷方式,但它不能正常工作.我还在隐藏层中尝试了不同类型的层和不同数量的节点,没有运气.
有人知道我做错了什么吗?此外,一些pybrain回归示例真的会有所帮助!我看的时候找不到任何东西.
提前致谢
我在打印通过使用任何opencv描述符提取器的'compute'方法获得的描述符矩阵的值时遇到一些麻烦.我想逐个打印一个特征的描述符,但是当我用'at'访问描述符矩阵的某个元素时,我会收到该元素的不同值.以下是'for'循环,用于在使用'at'时测试描述符矩阵的输出值:
for(int i=0; i<nF; i++){
if(lpx != keypoints[i].pt.x && lpy != keypoints[i].pt.y){
usedFeatures++;
cerr << descriptors.row(i) << endl << endl; // printing row of descriptor matrix
fileS << keypoints[i].pt.y << " " << keypoints[i].pt.x << " ";
fileS << keypoints[i].size << " " << keypoints[i].angle << endl;
if(i == nF - 2){
//printing subvector of descriptor matrix made of the element at row i and col 0
cerr << "get row i, col 0 " << descriptors.row(i).col(0) << endl;
//same …Run Code Online (Sandbox Code Playgroud) 我需要使用python wand(用于python的image-magick绑定)来创建合成图像,但是除了简单地将前景图像粘贴到背景图像之外,我在确定如何做任何事情时遇到了一些麻烦.我想要的是,鉴于我有两个像:

和

两个jpegs,我想删除猫的白色背景,然后粘贴在房间里.其他python图像模块的答案,比如PIL,也很好,我只需要一些东西来自动化合成过程.提前致谢.
我一直在尝试使用OpenCV stereoRectifyUncalibrated来纠正和构建一对图像的差异,但是我没有得到很好的结果.我的代码是:
template<class T>
T convertNumber(string& number)
{
istringstream ss(number);
T t;
ss >> t;
return t;
}
void readPoints(vector<Point2f>& points, string filename)
{
fstream filest(filename.c_str(), ios::in);
string line;
assert(filest != NULL);
getline(filest, line);
do{
int posEsp = line.find_first_of(' ');
string posX = line.substr(0, posEsp);
string posY = line.substr(posEsp+1, line.size() - posEsp);
float X = convertNumber<float>(posX);
float Y = convertNumber<float>(posY);
Point2f pnt = Point2f(X, Y);
points.push_back(pnt);
getline(filest, line);
}while(!filest.eof());
filest.close();
}
void drawKeypointSequence(Mat lFrame, Mat rFrame, vector<KeyPoint>& lKeyp, vector<KeyPoint>& rKeyp) …Run Code Online (Sandbox Code Playgroud) 我想知道是否有任何方法可以使用python中的json格式化一些对象的结果字符串.例如,假设我有以下字典:
{'a': 12.73874, 'b': 1.74872, 'c': 8.27495}
Run Code Online (Sandbox Code Playgroud)
并且json编码的结果是:
{
"c": 8.27495,
"b": 1.74872,
"a": 12.73874
}
Run Code Online (Sandbox Code Playgroud)
而我想要的结果是:
{
"a": 12.74,
"c": 8.28,
"b": 1.75
}
Run Code Online (Sandbox Code Playgroud)
注意元素的顺序和每个数字的小数位.有没有办法做到这一点?
提前致谢!
我为 AWS 创建了以下演示角色:
具有以下信任关系:
现在,我尝试将 EC2 实例的角色修改为DemoRoleForEC2,但该角色没有出现在下拉列表中:
根据这里的答案:IAM Role not shown in aws console in Modify IAM role page,它应该工作正常,因为信任关系正常,但事实并非如此。
我尝试的其他操作是停止并重新启动 EC2 实例,并尝试从“修改 IAM 的角色”页面创建角色,但没有任何效果。知道可能是什么问题吗?
我将训练和验证数据存储在两个单独的 TFRecord 文件中,其中存储了 4 个值:信号 A(float32 形状(150,)),信号 B(float32 形状(150,)),标签(标量 int64), id(字符串)。我的阅读解析功能是:
def _parse_data_function(sample_proto):
raw_signal_description = {
'label': tf.io.FixedLenFeature([], tf.int64),
'id': tf.io.FixedLenFeature([], tf.string),
}
for key, item in SIGNALS.items():
raw_signal_description[key] = tf.io.FixedLenFeature(item, tf.float32)
# Parse the input tf.Example proto using the dictionary above.
return tf.io.parse_single_example(sample_proto, raw_signal_description)
Run Code Online (Sandbox Code Playgroud)
其中SIGNALS是字典映射信号名称->信号形状。然后,我阅读了原始数据集:
training_raw = tf.data.TFRecordDataset(<path to training>), compression_type='GZIP')
val_raw = tf.data.TFRecordDataset(<path to validation>), compression_type='GZIP')
Run Code Online (Sandbox Code Playgroud)
并使用 map 来解析值:
training_data = training_raw.map(_parse_data_function)
val_data = val_raw.map(_parse_data_function)
Run Code Online (Sandbox Code Playgroud)
显示training_dataor的标题val_data,我得到:
<MapDataset shapes: …
我正在尝试使用pygtk创建一个打开子窗口的应用程序,但是我在创建/显示以及此窗口的销毁/隐藏过程时遇到了一些麻烦.作为测试,我做了一个简单的应用程序,打开一个带有单个按钮的主窗口,单击该按钮时会打开一个带有三个按钮的子窗口.我用glade来设计界面.我的代码如下:
main.py
import gobject
import pygtk
import gtk.gtkgl
import gtk.glade
from interface import *
if __name__ == "__main__":
gtk.gdk.threads_init()
settings = gtk.settings_get_default()
settings.props.gtk_button_images = True
intf = interface()
gtk.main()
Run Code Online (Sandbox Code Playgroud)
和interface.py
import pygtk
import gtk.gtkgl
import gtk.glade
class interface(object):
def __init__(self):
self.builder = gtk.Builder()
self.builder.add_from_file("web-interface.glade")
self.main_window = self.builder.get_object("main_window")
self.camera_window = self.builder.get_object("cam_window")
self.main_window.show()
self.builder.connect_signals(self)
def on_main_window_destroy(self, widget):
gtk.main_quit()
def on_camera_clicked(self, widget):
self.camera_window.show()
def on_bt1_clicked(self, widget):
self.camera_window.hide()
def on_cam_window_destroy(self, widget):
self.camera_window.hide()
return
Run Code Online (Sandbox Code Playgroud)
其中'bt1'是camera_window上的一个按钮来隐藏它,'camera'是主窗口上打开子窗口的按钮.
现在,当我尝试用'camera'打开子窗口并用'bt1'关闭它时,它工作得很好.但是如果我尝试用"X"按钮关闭子窗口,下次打开它时会得到一个灰色的空窗口,即使我将destroy事件更改为仅隐藏窗口.我究竟做错了什么?
提前致谢!
python ×6
c++ ×2
opencv ×2
amazon-ec2 ×1
amazon-iam ×1
aws-roles ×1
composition ×1
format ×1
gtk ×1
imagemagick ×1
json ×1
magickwand ×1
matrix ×1
pca ×1
pybrain ×1
pygtk ×1
regression ×1
scikit-learn ×1
stereo-3d ×1
string ×1
tensorflow ×1
tfrecord ×1
variance ×1
wand ×1
window ×1